<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>197940</bug_id>
          
          <creation_ts>2019-05-15 20:32:29 -0700</creation_ts>
          <short_desc>[JSC] Shrink Metadata</short_desc>
          <delta_ts>2019-05-29 20:41:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>197910</dependson>
    
    <dependson>197979</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1536715</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-15 20:32:29 -0700</bug_when>
    <thetext>It turns out that MetadataTable including UnlinkedMetadataTable takes much memory in Gmail (from 7MB to 50MB).
While we should shrink UnlinkedMetadataTable&apos;s offset table, we also should shrink Metadata itself.

The histogram taken in Gmail shows that the following metadata is significant.

1. op_call
3. op_resolve_scope
4. op_get_from_scope
5. op_get_by_id</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537009</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-16 20:37:57 -0700</bug_when>
    <thetext># After opening Gmail
UNLINKED METADATA TABLES 21979
METADATA TABLES 23454
METADATA TABLES SIZE 45578928
METADATA[op_call] = 137471
METADATA[op_call_eval] = 3
METADATA[op_call_varargs] = 257
METADATA[op_tail_call_varargs] = 15
METADATA[op_tail_call_forward_arguments] = 24
METADATA[op_construct] = 8826
METADATA[op_construct_varargs] = 0
METADATA[op_get_argument] = 43
METADATA[op_jneq_ptr] = 6556
METADATA[op_new_object] = 10523
METADATA[op_resolve_scope] = 272881
METADATA[op_get_from_scope] = 241736
METADATA[op_put_to_scope] = 70145
METADATA[op_get_from_arguments] = 338
METADATA[op_in_by_val] = 215
METADATA[op_new_array] = 10737
METADATA[op_get_by_id] = 148572
METADATA[op_get_by_id_with_this] = 0
METADATA[op_get_by_val_with_this] = 0
METADATA[op_catch] = 3278
METADATA[op_get_by_id_direct] = 88
METADATA[op_try_get_by_id] = 114
METADATA[op_put_by_id] = 106282
METADATA[op_tail_call] = 499
METADATA[op_profile_type] = 0
METADATA[op_profile_control_flow] = 0
METADATA[op_mul] = 336
METADATA[op_has_indexed_property] = 270
METADATA[op_get_by_val] = 7201
METADATA[op_put_by_val] = 5567
METADATA[op_get_direct_pname] = 356
METADATA[op_div] = 145
METADATA[op_put_by_val_direct] = 15182
METADATA[op_sub] = 1037
METADATA[op_bitand] = 433
METADATA[op_bitor] = 357
METADATA[op_bitxor] = 186
METADATA[op_to_object] = 57
METADATA[op_to_number] = 523
METADATA[op_negate] = 57
METADATA[op_bitnot] = 32
METADATA[op_new_array_with_size] = 94
METADATA[op_new_array_buffer] = 6908
METADATA[op_create_this] = 3523
METADATA[op_to_this] = 6609
METADATA[op_add] = 3933

# Wait for a bit.
UNLINKED METADATA TABLES 24681
METADATA TABLES 7444
METADATA TABLES SIZE 12956524
METADATA[op_call] = 40296
METADATA[op_call_eval] = 2
METADATA[op_call_varargs] = 60
METADATA[op_tail_call_varargs] = 14
METADATA[op_tail_call_forward_arguments] = 6
METADATA[op_construct] = 2476
METADATA[op_construct_varargs] = 0
METADATA[op_get_argument] = 23
METADATA[op_jneq_ptr] = 946
METADATA[op_new_object] = 5908
METADATA[op_resolve_scope] = 77591
METADATA[op_get_from_scope] = 65798
METADATA[op_put_to_scope] = 15597
METADATA[op_get_from_arguments] = 82
METADATA[op_in_by_val] = 56
METADATA[op_new_array] = 5860
METADATA[op_get_by_id] = 38279
METADATA[op_get_by_id_with_this] = 0
METADATA[op_get_by_val_with_this] = 0
METADATA[op_catch] = 431
METADATA[op_get_by_id_direct] = 33
METADATA[op_try_get_by_id] = 59
METADATA[op_put_by_id] = 31170
METADATA[op_tail_call] = 168
METADATA[op_profile_type] = 0
METADATA[op_profile_control_flow] = 0
METADATA[op_mul] = 93
METADATA[op_has_indexed_property] = 70
METADATA[op_get_by_val] = 2366
METADATA[op_put_by_val] = 2764
METADATA[op_get_direct_pname] = 141
METADATA[op_div] = 40
METADATA[op_put_by_val_direct] = 13566
METADATA[op_sub] = 298
METADATA[op_bitand] = 328
METADATA[op_bitor] = 201
METADATA[op_bitxor] = 171
METADATA[op_to_object] = 32
METADATA[op_to_number] = 238
METADATA[op_negate] = 23
METADATA[op_bitnot] = 23
METADATA[op_new_array_with_size] = 74
METADATA[op_new_array_buffer] = 4909
METADATA[op_create_this] = 545
METADATA[op_to_this] = 2275
METADATA[op_add] = 1186

# After Full GC
UNLINKED METADATA TABLES 24727
UNLINKED METADATA TABLES 0
UNLINKED METADATA TABLES 0
METADATA TABLES 2472
METADATA TABLES 0
METADATA TABLES 0
METADATA TABLES SIZE 0
METADATA TABLES SIZE 0
METADATA TABLES SIZE 1508872
METADATA[op_call] = 5892
METADATA[op_call_eval] = 0
METADATA[op_call_varargs] = 25
METADATA[op_tail_call_varargs] = 8
METADATA[op_tail_call_forward_arguments] = 3
METADATA[op_construct] = 375
METADATA[op_construct_varargs] = 0
METADATA[op_get_argument] = 14
METADATA[op_jneq_ptr] = 327
METADATA[op_new_object] = 118
METADATA[op_resolve_scope] = 5212
METADATA[op_get_from_scope] = 5376
METADATA[op_put_to_scope] = 245
METADATA[op_get_from_arguments] = 22
METADATA[op_in_by_val] = 30
METADATA[op_new_array] = 180
METADATA[op_get_by_id] = 6966
METADATA[op_get_by_id_with_this] = 0
METADATA[op_get_by_val_with_this] = 0
METADATA[op_catch] = 66
METADATA[op_get_by_id_direct] = 9
METADATA[op_try_get_by_id] = 26
METADATA[op_put_by_id] = 1774
METADATA[op_tail_call] = 56
METADATA[op_profile_type] = 0
METADATA[op_profile_control_flow] = 0
METADATA[op_mul] = 24
METADATA[op_has_indexed_property] = 18
METADATA[op_get_by_val] = 677
METADATA[op_put_by_val] = 171
METADATA[op_get_direct_pname] = 61
METADATA[op_div] = 10
METADATA[op_put_by_val_direct] = 26
METADATA[op_sub] = 118
METADATA[op_bitand] = 60
METADATA[op_bitor] = 44
METADATA[op_bitxor] = 10
METADATA[op_to_object] = 16
METADATA[op_to_number] = 89
METADATA[op_negate] = 16
METADATA[op_bitnot] = 4
METADATA[op_new_array_with_size] = 23
METADATA[op_new_array_buffer] = 9
METADATA[op_create_this] = 174
METADATA[op_to_this] = 961
METADATA[op_add] = 405</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537010</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-16 20:41:57 -0700</bug_when>
    <thetext>1. CodeBlock is eventually destroyed, and MetadataTable is also destroyed. But anyway, we still have 7000 - 8000 live MetadataTable.
2. But UnlinkedCodeBlock lives so long), and UnlinkedMetadata too (21979 - 24727.
3. So many CodeBlock holds MetadataTable. Many meaningful bytecode requires metadata and it means that all the UnlinkedCodeBlock with UnlinkedMetadata holds offset table, which takes basically about 200B at least.
4. Even after full GC happens, 7000 - 8000 MetadataTable exists, and about 24000 UnlinkedMetadataTable exists. At this point, it takes 14MB.


WebKit MetadataTable_0x10f511000                               227.0M      51.7M      33.3M         0K      25392      14.0M      19.2M     58%      45</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537015</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-16 20:46:19 -0700</bug_when>
    <thetext>WebKit InstructionStream_0x10f557000                           180.0M      43.1M      23.6M         0K      25451      24.1M         0K      0%      33


InstructionStream takes 24MB. It is also very large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537022</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-16 21:10:09 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; 1. CodeBlock is eventually destroyed, and MetadataTable is also destroyed.
&gt; But anyway, we still have 7000 - 8000 live MetadataTable.
&gt; 2. But UnlinkedCodeBlock lives so long), and UnlinkedMetadata too (21979 -
&gt; 24727.
&gt; 3. So many CodeBlock holds MetadataTable. Many meaningful bytecode requires
&gt; metadata and it means that all the UnlinkedCodeBlock with UnlinkedMetadata
&gt; holds offset table, which takes basically about 200B at least.
&gt; 4. Even after full GC happens, 7000 - 8000 MetadataTable exists, and about
&gt; 24000 UnlinkedMetadataTable exists. At this point, it takes 14MB.
&gt; 
&gt; 
&gt; WebKit MetadataTable_0x10f511000                               227.0M     
&gt; 51.7M      33.3M         0K      25392      14.0M      19.2M     58%      45

In Gmail, shrinking Metadata means,

1. Peak footprint can be significantly decrease. At peak, MetadataTable eats sooooo much bytes (30MB - 50MB, sometimes 70MB).
2. After full GC happens, still we get memory improvement by shrinking Metadata, but it could be 200KB ~ 1MB. But &quot;just after full GC&quot; is almost the time where the effect of this improvement becomes minimum.
3. Shrinking UnlinkedMetadataTable&apos;s offset table could offer significant improvement in Gmail&apos;s stable memory given that massive # of UnlinkedMetadataTable (24727).
4. We could significant improvement in RAMification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537039</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-16 23:15:45 -0700</bug_when>
    <thetext>And Instruction Opcode histogram is coming now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537049</commentid>
    <comment_count>6</comment_count>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-16 23:53:17 -0700</bug_when>
    <thetext>Nice, this data is great! A few ideas that I’ve had before:

- Merge op_resolve_scope and op_get_from_scope
- Add a 16-bit intermediate instruction size (I might try this soon, shouldn’t be too hard)
- Making the offsets 16-bit and make all metadata entries pointer-aligned. I believe the only metadata entry that would increase in size would be op_jneq_ptr, which should be fine since in your example it would mean adding 45k in total due to the MetadataTables and reducing 84 bytes for each UnlinkedMetadataTable, which should be a net 1.75mb improvement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537055</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 00:20:15 -0700</bug_when>
    <thetext>(In reply to Tadeu Zagallo from comment #6)
&gt; Nice, this data is great! A few ideas that I’ve had before:

Thanks!

&gt; 
&gt; - Merge op_resolve_scope and op_get_from_scope

Agreed. It can save much memory actually!

&gt; - Add a 16-bit intermediate instruction size (I might try this soon,
&gt; shouldn’t be too hard)

Right! I think this is promising if wide opcodes are enough. I discussed with Saam about adding something like op_wide2 (the name is super bad, maybe, op_wide16 and op_wide32 would be clear) and I believe almost all the opcodes can fit in this.
I&apos;m now measuring the distribution of opcodes in Gmail to get the information about op_wide version v.s. narrow version to see whether we should introduce uint16_t version op.
If Gmail has enough wide op and seems profitable, I think we could cut some memory.

&gt; - Making the offsets 16-bit and make all metadata entries pointer-aligned. I
&gt; believe the only metadata entry that would increase in size would be
&gt; op_jneq_ptr, which should be fine since in your example it would mean adding
&gt; 45k in total due to the MetadataTables and reducing 84 bytes for each
&gt; UnlinkedMetadataTable, which should be a net 1.75mb improvement.

Yeah! Currently, I have two ideas about this.

1. Using uint16_t offset table, and using UINT16_MAX as a marker. When LLInt see UINT16_MAX in the offset table, it gets the real offset from uint32_t version offset table. I believe almost all the offset table should be within uint16_t version. Then, our change for the hot path is just adding branch with UINT16_MAX. And if we gets uint32_t version offset table, it means that metadata table is larger than 64KB... Then, adding another ~200B would not matter much.

offset = uint16OffsetTable[opcode]
if (offset == UINT16_MAX) {
    // slow path!
    offset = uint32OffsetTable[opcode]
}
metadata = (SomeOp::Metadata*)table[offset] + id

2. Adding another index to metadata id in bytecode, compact metadata table to the opcodes which actually exists.

I&apos;m currently doing (1) thing. And I&apos;m also shrinking bunch of metadata.

For metadata shrinking, one idea we discussed is that dropping OSRExit recording Value from the ValueProfile. Most of CodeBlock won&apos;t become DFG / FTL. This OSRExit recording is just wasting memory in Baseline and LLInt. If CodeBlock gets DFG / FTL, (1) we should allocate side data for this OSRExit recording Value or (2) updating prediction very eagerly in OSR exit not to record the value.

I&apos;ll also upload the current metadata shrinking patch here. I think this gets RAMification improvement at least.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537057</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 00:37:56 -0700</bug_when>
    <thetext>Then, it&apos;s show time! The highlights.

1. Incredible amount of op_get_from_scope / op_put_to_scope / op_resolve_scope become wide
2. op_new_func_exp
3. op_get_by_id
4. op_put_by_id and op_put_by_val_direct (direct one is, maybe, derived from object literal)
5. op_mov gets wide considerably

# Just after loading all the content
UNLINKED METADATA TABLES 22571
METADATA TABLES 23984
METADATA TABLES SIZE 46067176
METADATA[op_call] = 139485
METADATA[op_call_eval] = 3
METADATA[op_call_varargs] = 262
METADATA[op_tail_call_varargs] = 15
METADATA[op_tail_call_forward_arguments] = 24
METADATA[op_construct] = 8918
METADATA[op_construct_varargs] = 0
METADATA[op_get_argument] = 43
METADATA[op_jneq_ptr] = 6611
METADATA[op_new_object] = 10613
METADATA[op_resolve_scope] = 274514
METADATA[op_get_from_scope] = 243538
METADATA[op_put_to_scope] = 70053
METADATA[op_get_from_arguments] = 343
METADATA[op_in_by_val] = 217
METADATA[op_new_array] = 10991
METADATA[op_get_by_id] = 150808
METADATA[op_get_by_id_with_this] = 0
METADATA[op_get_by_val_with_this] = 0
METADATA[op_catch] = 3304
METADATA[op_get_by_id_direct] = 84
METADATA[op_try_get_by_id] = 116
METADATA[op_put_by_id] = 106847
METADATA[op_tail_call] = 503
METADATA[op_profile_type] = 0
METADATA[op_profile_control_flow] = 0
METADATA[op_mul] = 352
METADATA[op_has_indexed_property] = 277
METADATA[op_get_by_val] = 7354
METADATA[op_put_by_val] = 5600
METADATA[op_get_direct_pname] = 363
METADATA[op_div] = 147
METADATA[op_put_by_val_direct] = 15230
METADATA[op_sub] = 1066
METADATA[op_bitand] = 435
METADATA[op_bitor] = 358
METADATA[op_bitxor] = 187
METADATA[op_to_object] = 57
METADATA[op_to_number] = 545
METADATA[op_negate] = 59
METADATA[op_bitnot] = 32
METADATA[op_new_array_with_size] = 96
METADATA[op_new_array_buffer] = 7159
METADATA[op_create_this] = 3572
METADATA[op_to_this] = 6822
METADATA[op_add] = 3969
UnlinkedCodeBlocks 0, InstructionStream bytes 20029724
OPCODE[op_call] = narrow: 101846, wide: 32539
OPCODE[op_call_eval] = narrow: 3, wide: 0
OPCODE[op_call_varargs] = narrow: 240, wide: 0
OPCODE[op_tail_call_varargs] = narrow: 9, wide: 0
OPCODE[op_tail_call_forward_arguments] = narrow: 1, wide: 0
OPCODE[op_construct] = narrow: 7702, wide: 717
OPCODE[op_construct_varargs] = narrow: 0, wide: 0
OPCODE[op_get_argument] = narrow: 15, wide: 0
OPCODE[op_jneq_ptr] = narrow: 2744, wide: 0
OPCODE[op_new_object] = narrow: 5031, wide: 4766
OPCODE[op_resolve_scope] = narrow: 105981, wide: 154335
OPCODE[op_get_from_scope] = narrow: 110472, wide: 119406
OPCODE[op_put_to_scope] = narrow: 14594, wide: 49504
OPCODE[op_get_from_arguments] = narrow: 290, wide: 0
OPCODE[op_in_by_val] = narrow: 163, wide: 0
OPCODE[op_new_array] = narrow: 4709, wide: 6019
OPCODE[op_get_by_id] = narrow: 106657, wide: 36062
OPCODE[op_get_by_id_with_this] = narrow: 0, wide: 0
OPCODE[op_get_by_val_with_this] = narrow: 0, wide: 0
OPCODE[op_catch] = narrow: 2714, wide: 504
OPCODE[op_get_by_id_direct] = narrow: 14, wide: 0
OPCODE[op_try_get_by_id] = narrow: 16, wide: 0
OPCODE[op_put_by_id] = narrow: 38532, wide: 61572
OPCODE[op_tail_call] = narrow: 288, wide: 0
OPCODE[op_profile_type] = narrow: 0, wide: 0
OPCODE[op_profile_control_flow] = narrow: 0, wide: 0
OPCODE[op_mul] = narrow: 298, wide: 14
OPCODE[op_has_indexed_property] = narrow: 251, wide: 0
OPCODE[op_get_by_val] = narrow: 6392, wide: 395
OPCODE[op_put_by_val] = narrow: 2288, wide: 2416
OPCODE[op_get_direct_pname] = narrow: 0, wide: 317
OPCODE[op_div] = narrow: 143, wide: 2
OPCODE[op_put_by_val_direct] = narrow: 294, wide: 14787
OPCODE[op_sub] = narrow: 926, wide: 6
OPCODE[op_bitand] = narrow: 431, wide: 0
OPCODE[op_bitor] = narrow: 321, wide: 3
OPCODE[op_bitxor] = narrow: 185, wide: 1
OPCODE[op_to_object] = narrow: 13, wide: 0
OPCODE[op_to_number] = narrow: 459, wide: 0
OPCODE[op_negate] = narrow: 52, wide: 0
OPCODE[op_bitnot] = narrow: 32, wide: 0
OPCODE[op_new_array_with_size] = narrow: 66, wide: 0
OPCODE[op_new_array_buffer] = narrow: 638, wide: 6209
OPCODE[op_create_this] = narrow: 3315, wide: 0
OPCODE[op_to_this] = narrow: 6481, wide: 0
OPCODE[op_add] = narrow: 3770, wide: 24
OPCODE[op_typeof] = narrow: 141, wide: 0
OPCODE[op_is_cell_with_type] = narrow: 45, wide: 0
OPCODE[op_in_by_id] = narrow: 52, wide: 11
OPCODE[op_put_by_id_with_this] = narrow: 0, wide: 0
OPCODE[op_del_by_id] = narrow: 77, wide: 0
OPCODE[op_put_by_val_with_this] = narrow: 0, wide: 0
OPCODE[op_del_by_val] = narrow: 123, wide: 0
OPCODE[op_put_getter_by_id] = narrow: 0, wide: 0
OPCODE[op_put_setter_by_id] = narrow: 0, wide: 0
OPCODE[op_put_getter_setter_by_id] = narrow: 6, wide: 2
OPCODE[op_put_getter_by_val] = narrow: 0, wide: 0
OPCODE[op_put_setter_by_val] = narrow: 0, wide: 0
OPCODE[op_define_data_property] = narrow: 0, wide: 0
OPCODE[op_define_accessor_property] = narrow: 0, wide: 0
OPCODE[op_jmp] = narrow: 17540, wide: 3051
OPCODE[op_jtrue] = narrow: 10933, wide: 259
OPCODE[op_jfalse] = narrow: 21853, wide: 162
OPCODE[op_jeq_null] = narrow: 458, wide: 123
OPCODE[op_jneq_null] = narrow: 223, wide: 1
OPCODE[op_jeq] = narrow: 756, wide: 12
OPCODE[op_jstricteq] = narrow: 483, wide: 0
OPCODE[op_jneq] = narrow: 1770, wide: 7
OPCODE[op_jnstricteq] = narrow: 673, wide: 8
OPCODE[op_jless] = narrow: 1058, wide: 363
OPCODE[op_jlesseq] = narrow: 104, wide: 28
OPCODE[op_jgreater] = narrow: 119, wide: 16
OPCODE[op_jgreatereq] = narrow: 21, wide: 2
OPCODE[op_jnless] = narrow: 1929, wide: 0
OPCODE[op_jnlesseq] = narrow: 270, wide: 5
OPCODE[op_jngreater] = narrow: 375, wide: 4
OPCODE[op_wide] = narrow: 0, wide: 0
OPCODE[op_jbelow] = narrow: 0, wide: 0
OPCODE[op_jbeloweq] = narrow: 1, wide: 0
OPCODE[op_loop_hint] = narrow: 3123, wide: 0
OPCODE[op_switch_imm] = narrow: 184, wide: 0
OPCODE[op_switch_char] = narrow: 10, wide: 0
OPCODE[op_switch_string] = narrow: 31, wide: 0
OPCODE[op_new_func] = narrow: 937, wide: 0
OPCODE[op_new_func_exp] = narrow: 16103, wide: 66965
OPCODE[op_new_generator_func] = narrow: 0, wide: 0
OPCODE[op_new_generator_func_exp] = narrow: 0, wide: 0
OPCODE[op_new_async_func] = narrow: 0, wide: 0
OPCODE[op_new_async_func_exp] = narrow: 0, wide: 0
OPCODE[op_new_async_generator_func] = narrow: 0, wide: 0
OPCODE[op_new_async_generator_func_exp] = narrow: 0, wide: 0
OPCODE[op_set_function_name] = narrow: 0, wide: 0
OPCODE[op_ret] = narrow: 26362, wide: 4
OPCODE[op_strcat] = narrow: 702, wide: 0
OPCODE[op_to_primitive] = narrow: 2007, wide: 0
OPCODE[op_put_to_arguments] = narrow: 8, wide: 0
OPCODE[op_push_with_scope] = narrow: 0, wide: 0
OPCODE[op_create_lexical_environment] = narrow: 2063, wide: 0
OPCODE[op_create_generator_frame_environment] = narrow: 0, wide: 0
OPCODE[op_get_parent_scope] = narrow: 5, wide: 0
OPCODE[op_throw] = narrow: 1075, wide: 1
OPCODE[op_throw_static_error] = narrow: 639, wide: 0
OPCODE[op_debug] = narrow: 0, wide: 0
OPCODE[op_end] = narrow: 233, wide: 0
OPCODE[op_get_enumerable_length] = narrow: 251, wide: 0
OPCODE[op_has_structure_property] = narrow: 251, wide: 0
OPCODE[op_has_generic_property] = narrow: 251, wide: 0
OPCODE[op_get_property_enumerator] = narrow: 251, wide: 0
OPCODE[op_enumerator_structure_pname] = narrow: 502, wide: 0
OPCODE[op_enumerator_generic_pname] = narrow: 502, wide: 0
OPCODE[op_to_index_string] = narrow: 251, wide: 0
OPCODE[op_unreachable] = narrow: 0, wide: 0
OPCODE[op_create_rest] = narrow: 0, wide: 0
OPCODE[op_get_rest_length] = narrow: 0, wide: 0
OPCODE[op_yield] = narrow: 0, wide: 0
OPCODE[op_check_traps] = narrow: 26056, wide: 0
OPCODE[op_log_shadow_chicken_prologue] = narrow: 0, wide: 0
OPCODE[op_log_shadow_chicken_tail] = narrow: 0, wide: 0
OPCODE[op_resolve_scope_for_hoisting_func_decl_in_eval] = narrow: 0, wide: 0
OPCODE[op_nop] = narrow: 48, wide: 0
OPCODE[op_super_sampler_begin] = narrow: 0, wide: 0
OPCODE[op_super_sampler_end] = narrow: 0, wide: 0
OPCODE[op_jngreatereq] = narrow: 138, wide: 0
OPCODE[op_enter] = narrow: 22933, wide: 0
OPCODE[op_get_scope] = narrow: 22933, wide: 0
OPCODE[op_create_direct_arguments] = narrow: 212, wide: 0
OPCODE[op_create_scoped_arguments] = narrow: 13, wide: 0
OPCODE[op_create_cloned_arguments] = narrow: 24, wide: 0
OPCODE[op_argument_count] = narrow: 2, wide: 0
OPCODE[op_check_tdz] = narrow: 26, wide: 0
OPCODE[op_new_array_with_spread] = narrow: 0, wide: 0
OPCODE[op_spread] = narrow: 0, wide: 0
OPCODE[op_new_regexp] = narrow: 962, wide: 628
OPCODE[op_mov] = narrow: 286218, wide: 16372
OPCODE[op_eq] = narrow: 1330, wide: 0
OPCODE[op_neq] = narrow: 689, wide: 0
OPCODE[op_stricteq] = narrow: 1104, wide: 1
OPCODE[op_nstricteq] = narrow: 349, wide: 4
OPCODE[op_less] = narrow: 665, wide: 1
OPCODE[op_lesseq] = narrow: 170, wide: 4
OPCODE[op_greater] = narrow: 181, wide: 1
OPCODE[op_greatereq] = narrow: 65, wide: 0
OPCODE[op_below] = narrow: 0, wide: 0
OPCODE[op_beloweq] = narrow: 0, wide: 0
OPCODE[op_mod] = narrow: 70, wide: 0
OPCODE[op_pow] = narrow: 0, wide: 0
OPCODE[op_lshift] = narrow: 153, wide: 0
OPCODE[op_rshift] = narrow: 82, wide: 0
OPCODE[op_urshift] = narrow: 149, wide: 2
OPCODE[op_eq_null] = narrow: 614, wide: 0
OPCODE[op_neq_null] = narrow: 632, wide: 0
OPCODE[op_to_string] = narrow: 14, wide: 0
OPCODE[op_unsigned] = narrow: 149, wide: 0
OPCODE[op_is_empty] = narrow: 6, wide: 0
OPCODE[op_is_undefined] = narrow: 274, wide: 0
OPCODE[op_is_undefined_or_null] = narrow: 10, wide: 0
OPCODE[op_is_boolean] = narrow: 5, wide: 0
OPCODE[op_is_number] = narrow: 48, wide: 0
OPCODE[op_is_object] = narrow: 603, wide: 0
OPCODE[op_is_object_or_null] = narrow: 166, wide: 0
OPCODE[op_is_function] = narrow: 221, wide: 0
OPCODE[op_inc] = narrow: 2788, wide: 0
OPCODE[op_dec] = narrow: 267, wide: 0
OPCODE[op_not] = narrow: 2950, wide: 3
OPCODE[op_identity_with_profile] = narrow: 0, wide: 0
OPCODE[op_overrides_has_instance] = narrow: 573, wide: 0
OPCODE[op_instanceof] = narrow: 573, wide: 0
OPCODE[op_instanceof_custom] = narrow: 573, wide: 0
OPCODE[handleUncaughtException] = narrow: 0, wide: 0
OPCODE[llint_eval_prologue] = narrow: 0, wide: 0
OPCODE[llint_module_program_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_call_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_construct_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_call_arity_check] = narrow: 0, wide: 0
OPCODE[llint_function_for_construct_arity_check] = narrow: 0, wide: 0
OPCODE[llint_generic_return_point] = narrow: 0, wide: 0
OPCODE[llint_throw_from_slow_path_trampoline] = narrow: 0, wide: 0
OPCODE[llint_throw_during_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_native_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_native_construct_trampoline] = narrow: 0, wide: 0
OPCODE[llint_internal_function_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_internal_function_construct_trampoline] = narrow: 0, wide: 0
OPCODE[llint_program_prologue] = narrow: 0, wide: 0

# Wait for several seconds after loading all the content.
UNLINKED METADATA TABLES 23664
METADATA TABLES 7490
METADATA TABLES SIZE 12497564
METADATA[op_call] = 37536
METADATA[op_call_eval] = 2
METADATA[op_call_varargs] = 75
METADATA[op_tail_call_varargs] = 14
METADATA[op_tail_call_forward_arguments] = 4
METADATA[op_construct] = 2433
METADATA[op_construct_varargs] = 0
METADATA[op_get_argument] = 22
METADATA[op_jneq_ptr] = 1097
METADATA[op_new_object] = 6015
METADATA[op_resolve_scope] = 74163
METADATA[op_get_from_scope] = 61704
METADATA[op_put_to_scope] = 15647
METADATA[op_get_from_arguments] = 93
METADATA[op_in_by_val] = 68
METADATA[op_new_array] = 5908
METADATA[op_get_by_id] = 38998
METADATA[op_get_by_id_with_this] = 0
METADATA[op_get_by_val_with_this] = 0
METADATA[op_catch] = 449
METADATA[op_get_by_id_direct] = 34
METADATA[op_try_get_by_id] = 47
METADATA[op_put_by_id] = 31268
METADATA[op_tail_call] = 167
METADATA[op_profile_type] = 0
METADATA[op_profile_control_flow] = 0
METADATA[op_mul] = 99
METADATA[op_has_indexed_property] = 83
METADATA[op_get_by_val] = 2572
METADATA[op_put_by_val] = 2879
METADATA[op_get_direct_pname] = 158
METADATA[op_div] = 59
METADATA[op_put_by_val_direct] = 13605
METADATA[op_sub] = 395
METADATA[op_bitand] = 318
METADATA[op_bitor] = 225
METADATA[op_bitxor] = 167
METADATA[op_to_object] = 31
METADATA[op_to_number] = 243
METADATA[op_negate] = 32
METADATA[op_bitnot] = 28
METADATA[op_new_array_with_size] = 70
METADATA[op_new_array_buffer] = 4903
METADATA[op_create_this] = 568
METADATA[op_to_this] = 2489
METADATA[op_add] = 1438
UnlinkedCodeBlocks 0, InstructionStream bytes 20280076
OPCODE[op_call] = narrow: 108233, wide: 32539
OPCODE[op_call_eval] = narrow: 3, wide: 0
OPCODE[op_call_varargs] = narrow: 249, wide: 0
OPCODE[op_tail_call_varargs] = narrow: 9, wide: 0
OPCODE[op_tail_call_forward_arguments] = narrow: 1, wide: 0
OPCODE[op_construct] = narrow: 7965, wide: 717
OPCODE[op_construct_varargs] = narrow: 0, wide: 0
OPCODE[op_get_argument] = narrow: 15, wide: 0
OPCODE[op_jneq_ptr] = narrow: 2826, wide: 0
OPCODE[op_new_object] = narrow: 5261, wide: 4766
OPCODE[op_resolve_scope] = narrow: 113766, wide: 154335
OPCODE[op_get_from_scope] = narrow: 118040, wide: 119406
OPCODE[op_put_to_scope] = narrow: 15365, wide: 49504
OPCODE[op_get_from_arguments] = narrow: 295, wide: 0
OPCODE[op_in_by_val] = narrow: 165, wide: 0
OPCODE[op_new_array] = narrow: 4958, wide: 6019
OPCODE[op_get_by_id] = narrow: 110983, wide: 36062
OPCODE[op_get_by_id_with_this] = narrow: 0, wide: 0
OPCODE[op_get_by_val_with_this] = narrow: 0, wide: 0
OPCODE[op_catch] = narrow: 2743, wide: 504
OPCODE[op_get_by_id_direct] = narrow: 16, wide: 0
OPCODE[op_try_get_by_id] = narrow: 16, wide: 0
OPCODE[op_put_by_id] = narrow: 40272, wide: 61573
OPCODE[op_tail_call] = narrow: 289, wide: 0
OPCODE[op_profile_type] = narrow: 0, wide: 0
OPCODE[op_profile_control_flow] = narrow: 0, wide: 0
OPCODE[op_mul] = narrow: 308, wide: 14
OPCODE[op_has_indexed_property] = narrow: 257, wide: 0
OPCODE[op_get_by_val] = narrow: 6622, wide: 400
OPCODE[op_put_by_val] = narrow: 2337, wide: 2416
OPCODE[op_get_direct_pname] = narrow: 0, wide: 322
OPCODE[op_div] = narrow: 155, wide: 2
OPCODE[op_put_by_val_direct] = narrow: 442, wide: 14787
OPCODE[op_sub] = narrow: 956, wide: 6
OPCODE[op_bitand] = narrow: 449, wide: 0
OPCODE[op_bitor] = narrow: 338, wide: 3
OPCODE[op_bitxor] = narrow: 194, wide: 1
OPCODE[op_to_object] = narrow: 13, wide: 0
OPCODE[op_to_number] = narrow: 476, wide: 0
OPCODE[op_negate] = narrow: 52, wide: 0
OPCODE[op_bitnot] = narrow: 32, wide: 0
OPCODE[op_new_array_with_size] = narrow: 69, wide: 0
OPCODE[op_new_array_buffer] = narrow: 649, wide: 6209
OPCODE[op_create_this] = narrow: 3438, wide: 0
OPCODE[op_to_this] = narrow: 6795, wide: 0
OPCODE[op_add] = narrow: 3846, wide: 24
OPCODE[op_typeof] = narrow: 144, wide: 0
OPCODE[op_is_cell_with_type] = narrow: 45, wide: 0
OPCODE[op_in_by_id] = narrow: 54, wide: 11
OPCODE[op_put_by_id_with_this] = narrow: 0, wide: 0
OPCODE[op_del_by_id] = narrow: 77, wide: 0
OPCODE[op_put_by_val_with_this] = narrow: 0, wide: 0
OPCODE[op_del_by_val] = narrow: 130, wide: 0
OPCODE[op_put_getter_by_id] = narrow: 0, wide: 0
OPCODE[op_put_setter_by_id] = narrow: 0, wide: 0
OPCODE[op_put_getter_setter_by_id] = narrow: 6, wide: 2
OPCODE[op_put_getter_by_val] = narrow: 0, wide: 0
OPCODE[op_put_setter_by_val] = narrow: 0, wide: 0
OPCODE[op_define_data_property] = narrow: 0, wide: 0
OPCODE[op_define_accessor_property] = narrow: 0, wide: 0
OPCODE[op_jmp] = narrow: 18041, wide: 3064
OPCODE[op_jtrue] = narrow: 11203, wide: 274
OPCODE[op_jfalse] = narrow: 22670, wide: 162
OPCODE[op_jeq_null] = narrow: 520, wide: 123
OPCODE[op_jneq_null] = narrow: 234, wide: 1
OPCODE[op_jeq] = narrow: 782, wide: 12
OPCODE[op_jstricteq] = narrow: 489, wide: 0
OPCODE[op_jneq] = narrow: 1827, wide: 7
OPCODE[op_jnstricteq] = narrow: 678, wide: 8
OPCODE[op_jless] = narrow: 1104, wide: 375
OPCODE[op_jlesseq] = narrow: 107, wide: 29
OPCODE[op_jgreater] = narrow: 126, wide: 18
OPCODE[op_jgreatereq] = narrow: 23, wide: 2
OPCODE[op_jnless] = narrow: 2012, wide: 0
OPCODE[op_jnlesseq] = narrow: 275, wide: 5
OPCODE[op_jngreater] = narrow: 395, wide: 4
OPCODE[op_wide] = narrow: 0, wide: 0
OPCODE[op_jbelow] = narrow: 0, wide: 0
OPCODE[op_jbeloweq] = narrow: 2, wide: 0
OPCODE[op_loop_hint] = narrow: 3261, wide: 0
OPCODE[op_switch_imm] = narrow: 197, wide: 0
OPCODE[op_switch_char] = narrow: 10, wide: 0
OPCODE[op_switch_string] = narrow: 32, wide: 0
OPCODE[op_new_func] = narrow: 937, wide: 0
OPCODE[op_new_func_exp] = narrow: 16595, wide: 66965
OPCODE[op_new_generator_func] = narrow: 0, wide: 0
OPCODE[op_new_generator_func_exp] = narrow: 0, wide: 0
OPCODE[op_new_async_func] = narrow: 0, wide: 0
OPCODE[op_new_async_func_exp] = narrow: 0, wide: 0
OPCODE[op_new_async_generator_func] = narrow: 0, wide: 0
OPCODE[op_new_async_generator_func_exp] = narrow: 0, wide: 0
OPCODE[op_set_function_name] = narrow: 0, wide: 0
OPCODE[op_ret] = narrow: 27628, wide: 5
OPCODE[op_strcat] = narrow: 711, wide: 0
OPCODE[op_to_primitive] = narrow: 2027, wide: 0
OPCODE[op_put_to_arguments] = narrow: 8, wide: 0
OPCODE[op_push_with_scope] = narrow: 0, wide: 0
OPCODE[op_create_lexical_environment] = narrow: 2179, wide: 0
OPCODE[op_create_generator_frame_environment] = narrow: 0, wide: 0
OPCODE[op_get_parent_scope] = narrow: 5, wide: 0
OPCODE[op_throw] = narrow: 1123, wide: 1
OPCODE[op_throw_static_error] = narrow: 649, wide: 0
OPCODE[op_debug] = narrow: 0, wide: 0
OPCODE[op_end] = narrow: 234, wide: 0
OPCODE[op_get_enumerable_length] = narrow: 257, wide: 0
OPCODE[op_has_structure_property] = narrow: 257, wide: 0
OPCODE[op_has_generic_property] = narrow: 257, wide: 0
OPCODE[op_get_property_enumerator] = narrow: 257, wide: 0
OPCODE[op_enumerator_structure_pname] = narrow: 514, wide: 0
OPCODE[op_enumerator_generic_pname] = narrow: 514, wide: 0
OPCODE[op_to_index_string] = narrow: 257, wide: 0
OPCODE[op_unreachable] = narrow: 0, wide: 0
OPCODE[op_create_rest] = narrow: 0, wide: 0
OPCODE[op_get_rest_length] = narrow: 0, wide: 0
OPCODE[op_yield] = narrow: 0, wide: 0
OPCODE[op_check_traps] = narrow: 27295, wide: 0
OPCODE[op_log_shadow_chicken_prologue] = narrow: 0, wide: 0
OPCODE[op_log_shadow_chicken_tail] = narrow: 0, wide: 0
OPCODE[op_resolve_scope_for_hoisting_func_decl_in_eval] = narrow: 0, wide: 0
OPCODE[op_nop] = narrow: 48, wide: 0
OPCODE[op_super_sampler_begin] = narrow: 0, wide: 0
OPCODE[op_super_sampler_end] = narrow: 0, wide: 0
OPCODE[op_jngreatereq] = narrow: 142, wide: 0
OPCODE[op_enter] = narrow: 24034, wide: 0
OPCODE[op_get_scope] = narrow: 24034, wide: 0
OPCODE[op_create_direct_arguments] = narrow: 220, wide: 0
OPCODE[op_create_scoped_arguments] = narrow: 13, wide: 0
OPCODE[op_create_cloned_arguments] = narrow: 24, wide: 0
OPCODE[op_argument_count] = narrow: 2, wide: 0
OPCODE[op_check_tdz] = narrow: 26, wide: 0
OPCODE[op_new_array_with_spread] = narrow: 0, wide: 0
OPCODE[op_spread] = narrow: 0, wide: 0
OPCODE[op_new_regexp] = narrow: 970, wide: 628
OPCODE[op_mov] = narrow: 296231, wide: 16456
OPCODE[op_eq] = narrow: 1357, wide: 0
OPCODE[op_neq] = narrow: 705, wide: 0
OPCODE[op_stricteq] = narrow: 1133, wide: 1
OPCODE[op_nstricteq] = narrow: 352, wide: 4
OPCODE[op_less] = narrow: 683, wide: 1
OPCODE[op_lesseq] = narrow: 178, wide: 4
OPCODE[op_greater] = narrow: 190, wide: 1
OPCODE[op_greatereq] = narrow: 73, wide: 0
OPCODE[op_below] = narrow: 0, wide: 0
OPCODE[op_beloweq] = narrow: 0, wide: 0
OPCODE[op_mod] = narrow: 71, wide: 0
OPCODE[op_pow] = narrow: 0, wide: 0
OPCODE[op_lshift] = narrow: 164, wide: 0
OPCODE[op_rshift] = narrow: 87, wide: 0
OPCODE[op_urshift] = narrow: 154, wide: 2
OPCODE[op_eq_null] = narrow: 632, wide: 0
OPCODE[op_neq_null] = narrow: 695, wide: 0
OPCODE[op_to_string] = narrow: 14, wide: 0
OPCODE[op_unsigned] = narrow: 152, wide: 0
OPCODE[op_is_empty] = narrow: 6, wide: 0
OPCODE[op_is_undefined] = narrow: 277, wide: 0
OPCODE[op_is_undefined_or_null] = narrow: 10, wide: 0
OPCODE[op_is_boolean] = narrow: 5, wide: 0
OPCODE[op_is_number] = narrow: 48, wide: 0
OPCODE[op_is_object] = narrow: 613, wide: 0
OPCODE[op_is_object_or_null] = narrow: 167, wide: 0
OPCODE[op_is_function] = narrow: 228, wide: 0
OPCODE[op_inc] = narrow: 2897, wide: 0
OPCODE[op_dec] = narrow: 276, wide: 0
OPCODE[op_not] = narrow: 3012, wide: 3
OPCODE[op_identity_with_profile] = narrow: 0, wide: 0
OPCODE[op_overrides_has_instance] = narrow: 582, wide: 0
OPCODE[op_instanceof] = narrow: 582, wide: 0
OPCODE[op_instanceof_custom] = narrow: 582, wide: 0
OPCODE[handleUncaughtException] = narrow: 0, wide: 0
OPCODE[llint_eval_prologue] = narrow: 0, wide: 0
OPCODE[llint_module_program_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_call_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_construct_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_call_arity_check] = narrow: 0, wide: 0
OPCODE[llint_function_for_construct_arity_check] = narrow: 0, wide: 0
OPCODE[llint_generic_return_point] = narrow: 0, wide: 0
OPCODE[llint_throw_from_slow_path_trampoline] = narrow: 0, wide: 0
OPCODE[llint_throw_during_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_native_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_native_construct_trampoline] = narrow: 0, wide: 0
OPCODE[llint_internal_function_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_internal_function_construct_trampoline] = narrow: 0, wide: 0
OPCODE[llint_program_prologue] = narrow: 0, wide: 0

# After Full GC
UNLINKED METADATA TABLES 23804
METADATA TABLES 2430
METADATA TABLES SIZE 1513076
METADATA[op_call] = 5810
METADATA[op_call_eval] = 0
METADATA[op_call_varargs] = 33
METADATA[op_tail_call_varargs] = 12
METADATA[op_tail_call_forward_arguments] = 3
METADATA[op_construct] = 370
METADATA[op_construct_varargs] = 0
METADATA[op_get_argument] = 13
METADATA[op_jneq_ptr] = 349
METADATA[op_new_object] = 114
METADATA[op_resolve_scope] = 4920
METADATA[op_get_from_scope] = 5125
METADATA[op_put_to_scope] = 262
METADATA[op_get_from_arguments] = 33
METADATA[op_in_by_val] = 25
METADATA[op_new_array] = 182
METADATA[op_get_by_id] = 7375
METADATA[op_get_by_id_with_this] = 0
METADATA[op_get_by_val_with_this] = 0
METADATA[op_catch] = 93
METADATA[op_get_by_id_direct] = 14
METADATA[op_try_get_by_id] = 24
METADATA[op_put_by_id] = 1935
METADATA[op_tail_call] = 66
METADATA[op_profile_type] = 0
METADATA[op_profile_control_flow] = 0
METADATA[op_mul] = 32
METADATA[op_has_indexed_property] = 23
METADATA[op_get_by_val] = 678
METADATA[op_put_by_val] = 171
METADATA[op_get_direct_pname] = 65
METADATA[op_div] = 11
METADATA[op_put_by_val_direct] = 33
METADATA[op_sub] = 138
METADATA[op_bitand] = 72
METADATA[op_bitor] = 59
METADATA[op_bitxor] = 11
METADATA[op_to_object] = 14
METADATA[op_to_number] = 92
METADATA[op_negate] = 16
METADATA[op_bitnot] = 4
METADATA[op_new_array_with_size] = 18
METADATA[op_new_array_buffer] = 9
METADATA[op_create_this] = 177
METADATA[op_to_this] = 971
METADATA[op_add] = 279
UnlinkedCodeBlocks 0, InstructionStream bytes 20310026
OPCODE[op_call] = narrow: 109200, wide: 32539
OPCODE[op_call_eval] = narrow: 3, wide: 0
OPCODE[op_call_varargs] = narrow: 249, wide: 0
OPCODE[op_tail_call_varargs] = narrow: 9, wide: 0
OPCODE[op_tail_call_forward_arguments] = narrow: 1, wide: 0
OPCODE[op_construct] = narrow: 7984, wide: 717
OPCODE[op_construct_varargs] = narrow: 0, wide: 0
OPCODE[op_get_argument] = narrow: 15, wide: 0
OPCODE[op_jneq_ptr] = narrow: 2834, wide: 0
OPCODE[op_new_object] = narrow: 5267, wide: 4766
OPCODE[op_resolve_scope] = narrow: 114611, wide: 154335
OPCODE[op_get_from_scope] = narrow: 118944, wide: 119406
OPCODE[op_put_to_scope] = narrow: 15410, wide: 49504
OPCODE[op_get_from_arguments] = narrow: 295, wide: 0
OPCODE[op_in_by_val] = narrow: 165, wide: 0
OPCODE[op_new_array] = narrow: 4990, wide: 6019
OPCODE[op_get_by_id] = narrow: 111780, wide: 36062
OPCODE[op_get_by_id_with_this] = narrow: 0, wide: 0
OPCODE[op_get_by_val_with_this] = narrow: 0, wide: 0
OPCODE[op_catch] = narrow: 2746, wide: 504
OPCODE[op_get_by_id_direct] = narrow: 16, wide: 0
OPCODE[op_try_get_by_id] = narrow: 16, wide: 0
OPCODE[op_put_by_id] = narrow: 40320, wide: 61573
OPCODE[op_tail_call] = narrow: 289, wide: 0
OPCODE[op_profile_type] = narrow: 0, wide: 0
OPCODE[op_profile_control_flow] = narrow: 0, wide: 0
OPCODE[op_mul] = narrow: 308, wide: 14
OPCODE[op_has_indexed_property] = narrow: 257, wide: 0
OPCODE[op_get_by_val] = narrow: 6629, wide: 400
OPCODE[op_put_by_val] = narrow: 2338, wide: 2416
OPCODE[op_get_direct_pname] = narrow: 0, wide: 322
OPCODE[op_div] = narrow: 155, wide: 2
OPCODE[op_put_by_val_direct] = narrow: 442, wide: 14787
OPCODE[op_sub] = narrow: 963, wide: 6
OPCODE[op_bitand] = narrow: 456, wide: 0
OPCODE[op_bitor] = narrow: 338, wide: 3
OPCODE[op_bitxor] = narrow: 196, wide: 1
OPCODE[op_to_object] = narrow: 13, wide: 0
OPCODE[op_to_number] = narrow: 475, wide: 0
OPCODE[op_negate] = narrow: 53, wide: 0
OPCODE[op_bitnot] = narrow: 32, wide: 0
OPCODE[op_new_array_with_size] = narrow: 69, wide: 0
OPCODE[op_new_array_buffer] = narrow: 652, wide: 6209
OPCODE[op_create_this] = narrow: 3442, wide: 0
OPCODE[op_to_this] = narrow: 6848, wide: 0
OPCODE[op_add] = narrow: 3857, wide: 24
OPCODE[op_typeof] = narrow: 144, wide: 0
OPCODE[op_is_cell_with_type] = narrow: 45, wide: 0
OPCODE[op_in_by_id] = narrow: 54, wide: 11
OPCODE[op_put_by_id_with_this] = narrow: 0, wide: 0
OPCODE[op_del_by_id] = narrow: 77, wide: 0
OPCODE[op_put_by_val_with_this] = narrow: 0, wide: 0
OPCODE[op_del_by_val] = narrow: 130, wide: 0
OPCODE[op_put_getter_by_id] = narrow: 0, wide: 0
OPCODE[op_put_setter_by_id] = narrow: 0, wide: 0
OPCODE[op_put_getter_setter_by_id] = narrow: 6, wide: 2
OPCODE[op_put_getter_by_val] = narrow: 0, wide: 0
OPCODE[op_put_setter_by_val] = narrow: 0, wide: 0
OPCODE[op_define_data_property] = narrow: 0, wide: 0
OPCODE[op_define_accessor_property] = narrow: 0, wide: 0
OPCODE[op_jmp] = narrow: 18110, wide: 3066
OPCODE[op_jtrue] = narrow: 11271, wide: 280
OPCODE[op_jfalse] = narrow: 22804, wide: 162
OPCODE[op_jeq_null] = narrow: 527, wide: 123
OPCODE[op_jneq_null] = narrow: 235, wide: 1
OPCODE[op_jeq] = narrow: 782, wide: 12
OPCODE[op_jstricteq] = narrow: 490, wide: 0
OPCODE[op_jneq] = narrow: 1828, wide: 7
OPCODE[op_jnstricteq] = narrow: 679, wide: 8
OPCODE[op_jless] = narrow: 1111, wide: 377
OPCODE[op_jlesseq] = narrow: 107, wide: 29
OPCODE[op_jgreater] = narrow: 126, wide: 18
OPCODE[op_jgreatereq] = narrow: 23, wide: 2
OPCODE[op_jnless] = narrow: 2028, wide: 0
OPCODE[op_jnlesseq] = narrow: 277, wide: 5
OPCODE[op_jngreater] = narrow: 397, wide: 4
OPCODE[op_wide] = narrow: 0, wide: 0
OPCODE[op_jbelow] = narrow: 0, wide: 0
OPCODE[op_jbeloweq] = narrow: 2, wide: 0
OPCODE[op_loop_hint] = narrow: 3291, wide: 0
OPCODE[op_switch_imm] = narrow: 198, wide: 0
OPCODE[op_switch_char] = narrow: 10, wide: 0
OPCODE[op_switch_string] = narrow: 32, wide: 0
OPCODE[op_new_func] = narrow: 937, wide: 0
OPCODE[op_new_func_exp] = narrow: 16633, wide: 66965
OPCODE[op_new_generator_func] = narrow: 0, wide: 0
OPCODE[op_new_generator_func_exp] = narrow: 0, wide: 0
OPCODE[op_new_async_func] = narrow: 0, wide: 0
OPCODE[op_new_async_func_exp] = narrow: 0, wide: 0
OPCODE[op_new_async_generator_func] = narrow: 0, wide: 0
OPCODE[op_new_async_generator_func_exp] = narrow: 0, wide: 0
OPCODE[op_set_function_name] = narrow: 0, wide: 0
OPCODE[op_ret] = narrow: 27795, wide: 5
OPCODE[op_strcat] = narrow: 711, wide: 0
OPCODE[op_to_primitive] = narrow: 2027, wide: 0
OPCODE[op_put_to_arguments] = narrow: 8, wide: 0
OPCODE[op_push_with_scope] = narrow: 0, wide: 0
OPCODE[op_create_lexical_environment] = narrow: 2205, wide: 0
OPCODE[op_create_generator_frame_environment] = narrow: 0, wide: 0
OPCODE[op_get_parent_scope] = narrow: 5, wide: 0
OPCODE[op_throw] = narrow: 1128, wide: 1
OPCODE[op_throw_static_error] = narrow: 658, wide: 0
OPCODE[op_debug] = narrow: 0, wide: 0
OPCODE[op_end] = narrow: 207, wide: 0
OPCODE[op_get_enumerable_length] = narrow: 257, wide: 0
OPCODE[op_has_structure_property] = narrow: 257, wide: 0
OPCODE[op_has_generic_property] = narrow: 257, wide: 0
OPCODE[op_get_property_enumerator] = narrow: 257, wide: 0
OPCODE[op_enumerator_structure_pname] = narrow: 514, wide: 0
OPCODE[op_enumerator_generic_pname] = narrow: 514, wide: 0
OPCODE[op_to_index_string] = narrow: 257, wide: 0
OPCODE[op_unreachable] = narrow: 0, wide: 0
OPCODE[op_create_rest] = narrow: 0, wide: 0
OPCODE[op_get_rest_length] = narrow: 0, wide: 0
OPCODE[op_yield] = narrow: 0, wide: 0
OPCODE[op_check_traps] = narrow: 27457, wide: 0
OPCODE[op_log_shadow_chicken_prologue] = narrow: 0, wide: 0
OPCODE[op_log_shadow_chicken_tail] = narrow: 0, wide: 0
OPCODE[op_resolve_scope_for_hoisting_func_decl_in_eval] = narrow: 0, wide: 0
OPCODE[op_nop] = narrow: 48, wide: 0
OPCODE[op_super_sampler_begin] = narrow: 0, wide: 0
OPCODE[op_super_sampler_end] = narrow: 0, wide: 0
OPCODE[op_jngreatereq] = narrow: 146, wide: 0
OPCODE[op_enter] = narrow: 24166, wide: 0
OPCODE[op_get_scope] = narrow: 24166, wide: 0
OPCODE[op_create_direct_arguments] = narrow: 220, wide: 0
OPCODE[op_create_scoped_arguments] = narrow: 13, wide: 0
OPCODE[op_create_cloned_arguments] = narrow: 24, wide: 0
OPCODE[op_argument_count] = narrow: 2, wide: 0
OPCODE[op_check_tdz] = narrow: 26, wide: 0
OPCODE[op_new_array_with_spread] = narrow: 0, wide: 0
OPCODE[op_spread] = narrow: 0, wide: 0
OPCODE[op_new_regexp] = narrow: 969, wide: 628
OPCODE[op_mov] = narrow: 297265, wide: 16456
OPCODE[op_eq] = narrow: 1358, wide: 0
OPCODE[op_neq] = narrow: 707, wide: 0
OPCODE[op_stricteq] = narrow: 1138, wide: 1
OPCODE[op_nstricteq] = narrow: 353, wide: 4
OPCODE[op_less] = narrow: 685, wide: 1
OPCODE[op_lesseq] = narrow: 179, wide: 4
OPCODE[op_greater] = narrow: 191, wide: 1
OPCODE[op_greatereq] = narrow: 76, wide: 0
OPCODE[op_below] = narrow: 0, wide: 0
OPCODE[op_beloweq] = narrow: 0, wide: 0
OPCODE[op_mod] = narrow: 71, wide: 0
OPCODE[op_pow] = narrow: 0, wide: 0
OPCODE[op_lshift] = narrow: 164, wide: 0
OPCODE[op_rshift] = narrow: 87, wide: 0
OPCODE[op_urshift] = narrow: 154, wide: 2
OPCODE[op_eq_null] = narrow: 633, wide: 0
OPCODE[op_neq_null] = narrow: 698, wide: 0
OPCODE[op_to_string] = narrow: 14, wide: 0
OPCODE[op_unsigned] = narrow: 152, wide: 0
OPCODE[op_is_empty] = narrow: 6, wide: 0
OPCODE[op_is_undefined] = narrow: 277, wide: 0
OPCODE[op_is_undefined_or_null] = narrow: 10, wide: 0
OPCODE[op_is_boolean] = narrow: 5, wide: 0
OPCODE[op_is_number] = narrow: 48, wide: 0
OPCODE[op_is_object] = narrow: 622, wide: 0
OPCODE[op_is_object_or_null] = narrow: 167, wide: 0
OPCODE[op_is_function] = narrow: 229, wide: 0
OPCODE[op_inc] = narrow: 2909, wide: 0
OPCODE[op_dec] = narrow: 276, wide: 0
OPCODE[op_not] = narrow: 3021, wide: 3
OPCODE[op_identity_with_profile] = narrow: 0, wide: 0
OPCODE[op_overrides_has_instance] = narrow: 591, wide: 0
OPCODE[op_instanceof] = narrow: 591, wide: 0
OPCODE[op_instanceof_custom] = narrow: 591, wide: 0
OPCODE[handleUncaughtException] = narrow: 0, wide: 0
OPCODE[llint_eval_prologue] = narrow: 0, wide: 0
OPCODE[llint_module_program_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_call_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_construct_prologue] = narrow: 0, wide: 0
OPCODE[llint_function_for_call_arity_check] = narrow: 0, wide: 0
OPCODE[llint_function_for_construct_arity_check] = narrow: 0, wide: 0
OPCODE[llint_generic_return_point] = narrow: 0, wide: 0
OPCODE[llint_throw_from_slow_path_trampoline] = narrow: 0, wide: 0
OPCODE[llint_throw_during_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_native_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_native_construct_trampoline] = narrow: 0, wide: 0
OPCODE[llint_internal_function_call_trampoline] = narrow: 0, wide: 0
OPCODE[llint_internal_function_construct_trampoline] = narrow: 0, wide: 0
OPCODE[llint_program_prologue] = narrow: 0, wide: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537061</commentid>
    <comment_count>9</comment_count>
      <attachid>370108</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 00:55:24 -0700</bug_when>
    <thetext>Created attachment 370108
Patch

WIP, shrinking Metadata. I&apos;ll shrink OpCall one more 8 byte by embedding ArrayProfile into LLIntCallLinkInfo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537063</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 00:58:44 -0700</bug_when>
    <thetext>Current metadata status. I&apos;ll put ArrayProfile in LLIntCallLinkInfo&apos;s padding space (this padding space is created by using Packed&lt;&gt; linked list, yay).



OpCall
  +0 &lt; 72&gt; Metadata
  +0 &lt; 32&gt;     JSC::LLIntCallLinkInfo m_callLinkInfo
  +0 &lt; 12&gt;         WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt; WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt;
  +0 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_next
  +0 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +0 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +0 &lt;  6&gt;                       unsigned char [6] __elems_
  +6 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_prev
  +6 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +6 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +6 &lt;  6&gt;                       unsigned char [6] __elems_
 +12 &lt;  4&gt;       &lt;PADDING: 4 bytes&gt;
 +16 &lt;  8&gt;       uintptr_t m_calleeOrLastSeenCalleeWithLinkBit
 +24 &lt;  8&gt;         JSC::MacroAssemblerCodePtr&lt;357&gt; m_machineCodeTarget
 +24 &lt;  1&gt;             JSC::MacroAssemblerCodePtrBase JSC::MacroAssemblerCodePtrBase
 +24 &lt;  8&gt;           const void * m_value
 +32 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
 +32 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
 +36 &lt;  1&gt;       bool m_mayStoreToHole
 +37 &lt;  1&gt;       bool m_outOfBounds
 +38 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
 +38 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
 +38 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
 +38 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
 +39 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
 +40 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +44 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +48 &lt; 24&gt;     JSC::ValueProfile m_profile
 +48 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +48 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +48 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +64 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 72
Total pad bytes: 9
Padding percentage: 12.50 %
OpCallEval
  +0 &lt; 72&gt; Metadata
  +0 &lt; 32&gt;     JSC::LLIntCallLinkInfo m_callLinkInfo
  +0 &lt; 12&gt;         WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt; WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt;
  +0 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_next
  +0 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +0 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +0 &lt;  6&gt;                       unsigned char [6] __elems_
  +6 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_prev
  +6 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +6 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +6 &lt;  6&gt;                       unsigned char [6] __elems_
 +12 &lt;  4&gt;       &lt;PADDING: 4 bytes&gt;
 +16 &lt;  8&gt;       uintptr_t m_calleeOrLastSeenCalleeWithLinkBit
 +24 &lt;  8&gt;         JSC::MacroAssemblerCodePtr&lt;357&gt; m_machineCodeTarget
 +24 &lt;  1&gt;             JSC::MacroAssemblerCodePtrBase JSC::MacroAssemblerCodePtrBase
 +24 &lt;  8&gt;           const void * m_value
 +32 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
 +32 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
 +36 &lt;  1&gt;       bool m_mayStoreToHole
 +37 &lt;  1&gt;       bool m_outOfBounds
 +38 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
 +38 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
 +38 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
 +38 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
 +39 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
 +40 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +44 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +48 &lt; 24&gt;     JSC::ValueProfile m_profile
 +48 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +48 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +48 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +64 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 72
Total pad bytes: 9
Padding percentage: 12.50 %
OpCallVarargs
  +0 &lt; 40&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +12 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +16 &lt; 24&gt;     JSC::ValueProfile m_profile
 +16 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +16 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +16 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +32 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 40
Total pad bytes: 5
Padding percentage: 12.50 %
OpTailCallVarargs
  +0 &lt; 40&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +12 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +16 &lt; 24&gt;     JSC::ValueProfile m_profile
 +16 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +16 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +16 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +32 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 40
Total pad bytes: 5
Padding percentage: 12.50 %
OpTailCallForwardArguments
  +0 &lt; 40&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +12 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +16 &lt; 24&gt;     JSC::ValueProfile m_profile
 +16 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +16 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +16 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +32 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 40
Total pad bytes: 5
Padding percentage: 12.50 %
OpConstruct
  +0 &lt; 72&gt; Metadata
  +0 &lt; 32&gt;     JSC::LLIntCallLinkInfo m_callLinkInfo
  +0 &lt; 12&gt;         WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt; WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt;
  +0 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_next
  +0 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +0 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +0 &lt;  6&gt;                       unsigned char [6] __elems_
  +6 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_prev
  +6 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +6 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +6 &lt;  6&gt;                       unsigned char [6] __elems_
 +12 &lt;  4&gt;       &lt;PADDING: 4 bytes&gt;
 +16 &lt;  8&gt;       uintptr_t m_calleeOrLastSeenCalleeWithLinkBit
 +24 &lt;  8&gt;         JSC::MacroAssemblerCodePtr&lt;357&gt; m_machineCodeTarget
 +24 &lt;  1&gt;             JSC::MacroAssemblerCodePtrBase JSC::MacroAssemblerCodePtrBase
 +24 &lt;  8&gt;           const void * m_value
 +32 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
 +32 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
 +36 &lt;  1&gt;       bool m_mayStoreToHole
 +37 &lt;  1&gt;       bool m_outOfBounds
 +38 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
 +38 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
 +38 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
 +38 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
 +39 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
 +40 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +44 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +48 &lt; 24&gt;     JSC::ValueProfile m_profile
 +48 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +48 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +48 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +64 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 72
Total pad bytes: 9
Padding percentage: 12.50 %
OpConstructVarargs
  +0 &lt; 40&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +12 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +16 &lt; 24&gt;     JSC::ValueProfile m_profile
 +16 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +16 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +16 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +32 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 40
Total pad bytes: 5
Padding percentage: 12.50 %
OpGetArgument
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpJneqPtr
  +0 &lt;  1&gt; Metadata
  +0 &lt;  1&gt;   bool m_hasJumped
Total byte size: 1
Total pad bytes: 0
OpNewObject
  +0 &lt; 16&gt; Metadata
  +0 &lt; 16&gt;     JSC::ObjectAllocationProfile m_objectAllocationProfile
  +0 &lt; 16&gt;         JSC::ObjectAllocationProfileBase&lt;JSC::ObjectAllocationProfile&gt; JSC::ObjectAllocationProfileBase&lt;JSC::ObjectAllocationProfile&gt;
  +0 &lt;  8&gt;             JSC::Allocator m_allocator
  +0 &lt;  8&gt;               JSC::LocalAllocator * m_localAllocator
  +8 &lt;  8&gt;             JSC::WriteBarrier&lt;JSC::Structure, WTF::DumbPtrTraits&lt;JSC::Structure&gt; &gt; m_structure
  +8 &lt;  8&gt;                 JSC::WriteBarrierBase&lt;JSC::Structure, WTF::DumbPtrTraits&lt;JSC::Structure&gt; &gt; JSC::WriteBarrierBase&lt;JSC::Structure, WTF::DumbPtrTraits&lt;JSC::Structure&gt; &gt;
  +8 &lt;  8&gt;                   JSC::WriteBarrierBase&lt;JSC::Structure, WTF::DumbPtrTraits&lt;JSC::Structure&gt; &gt;::StorageType m_cell
Total byte size: 16
Total pad bytes: 0
OpResolveScope
  +0 &lt; 16&gt; Metadata
  +0 &lt;  4&gt;   JSC::ResolveType m_resolveType
  +4 &lt;  4&gt;   JSC::OpResolveScope::Metadata::(anonymous union) None
  +8 &lt;  8&gt;   JSC::OpResolveScope::Metadata::(anonymous union) None
Total byte size: 16
Total pad bytes: 0
OpGetFromScope
  +0 &lt; 48&gt; Metadata
  +0 &lt;  4&gt;     JSC::GetPutInfo m_getPutInfo
  +0 &lt;  4&gt;       JSC::GetPutInfo::Operand m_operand
  +4 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
  +8 &lt;  8&gt;   JSC::OpGetFromScope::Metadata::(anonymous union) None
 +16 &lt;  8&gt;   uintptr_t m_operand
 +24 &lt; 24&gt;     JSC::ValueProfile m_profile
 +24 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +24 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +24 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +40 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 48
Total pad bytes: 4
Padding percentage: 8.33 %
OpPutToScope
  +0 &lt; 24&gt; Metadata
  +0 &lt;  4&gt;     JSC::GetPutInfo m_getPutInfo
  +0 &lt;  4&gt;       JSC::GetPutInfo::Operand m_operand
  +4 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
  +8 &lt;  8&gt;   JSC::OpPutToScope::Metadata::(anonymous union) None
 +16 &lt;  8&gt;   uintptr_t m_operand
Total byte size: 24
Total pad bytes: 4
Padding percentage: 16.67 %
OpGetFromArguments
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpInByVal
  +0 &lt; 12&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
Total byte size: 12
Total pad bytes: 1
Padding percentage: 8.33 %
OpNewArray
  +0 &lt; 16&gt; Metadata
  +0 &lt; 16&gt;     JSC::ArrayAllocationProfile m_arrayAllocationProfile
  +0 &lt;  1&gt;       JSC::IndexingType m_currentIndexingType
  +1 &lt;  3&gt;       &lt;PADDING: 3 bytes&gt;
  +4 &lt;  4&gt;       unsigned int m_largestSeenVectorLength
  +8 &lt;  8&gt;       JSC::JSArray * m_lastArray
Total byte size: 16
Total pad bytes: 3
Padding percentage: 18.75 %
OpGetById
  +0 &lt; 40&gt; Metadata
  +0 &lt; 16&gt;   JSC::GetByIdModeMetadata m_modeMetadata
 +16 &lt; 24&gt;     JSC::ValueProfile m_profile
 +16 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +16 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +16 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +32 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 40
Total pad bytes: 0
OpGetByIdWithThis
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpGetByValWithThis
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpCatch
  +0 &lt;  8&gt; Metadata
  +0 &lt;  8&gt;   JSC::ValueProfileAndOperandBuffer * m_buffer
Total byte size: 8
Total pad bytes: 0
OpGetByIdDirect
  +0 &lt; 32&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
 +24 &lt;  4&gt;   JSC::StructureID m_structureID
 +28 &lt;  4&gt;   unsigned int m_offset
Total byte size: 32
Total pad bytes: 0
OpTryGetById
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpPutById
  +0 &lt; 24&gt; Metadata
  +0 &lt;  4&gt;   JSC::StructureID m_oldStructureID
  +4 &lt;  4&gt;   unsigned int m_offset
  +8 &lt;  4&gt;   JSC::StructureID m_newStructureID
 +12 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +16 &lt;  8&gt;     JSC::WriteBarrierBase&lt;JSC::StructureChain, WTF::DumbPtrTraits&lt;JSC::StructureChain&gt; &gt; m_structureChain
 +16 &lt;  8&gt;       JSC::WriteBarrierBase&lt;JSC::StructureChain, WTF::DumbPtrTraits&lt;JSC::StructureChain&gt; &gt;::StorageType m_cell
Total byte size: 24
Total pad bytes: 4
Padding percentage: 16.67 %
OpTailCall
  +0 &lt; 72&gt; Metadata
  +0 &lt; 32&gt;     JSC::LLIntCallLinkInfo m_callLinkInfo
  +0 &lt; 12&gt;         WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt; WTF::PackedRawSentinelNode&lt;JSC::LLIntCallLinkInfo&gt;
  +0 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_next
  +0 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +0 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +0 &lt;  6&gt;                       unsigned char [6] __elems_
  +6 &lt;  6&gt;             WTF::PackedPtrTraits&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt; &gt;::StorageType m_prev
  +6 &lt;  6&gt;                 WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt; WTF::PackedAlignedPtr&lt;WTF::BasicRawSentinelNode&lt;JSC::LLIntCallLinkInfo, WTF::PackedPtrTraits&lt;JSC::LLIntCallLinkInfo&gt; &gt;, 1&gt;
  +6 &lt;  6&gt;                     std::__1::array&lt;unsigned char, 6&gt; m_storage
  +6 &lt;  6&gt;                       unsigned char [6] __elems_
 +12 &lt;  4&gt;       &lt;PADDING: 4 bytes&gt;
 +16 &lt;  8&gt;       uintptr_t m_calleeOrLastSeenCalleeWithLinkBit
 +24 &lt;  8&gt;         JSC::MacroAssemblerCodePtr&lt;357&gt; m_machineCodeTarget
 +24 &lt;  1&gt;             JSC::MacroAssemblerCodePtrBase JSC::MacroAssemblerCodePtrBase
 +24 &lt;  8&gt;           const void * m_value
 +32 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
 +32 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
 +36 &lt;  1&gt;       bool m_mayStoreToHole
 +37 &lt;  1&gt;       bool m_outOfBounds
 +38 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
 +38 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
 +38 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
 +38 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
 +39 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
 +40 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +44 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
 +48 &lt; 24&gt;     JSC::ValueProfile m_profile
 +48 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
 +48 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
 +48 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +64 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 72
Total pad bytes: 9
Padding percentage: 12.50 %
OpProfileType
  +0 &lt;  8&gt; Metadata
  +0 &lt;  8&gt;   JSC::TypeLocation * m_typeLocation
Total byte size: 8
Total pad bytes: 0
OpProfileControlFlow
  +0 &lt;  8&gt; Metadata
  +0 &lt;  8&gt;   JSC::BasicBlockLocation * m_basicBlockLocation
Total byte size: 8
Total pad bytes: 0
OpMul
  +0 &lt;  4&gt; Metadata
  +0 &lt;  4&gt;     JSC::ArithProfile m_arithProfile
  +0 &lt;  4&gt;       uint32_t m_bits
Total byte size: 4
Total pad bytes: 0
OpHasIndexedProperty
  +0 &lt; 12&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
Total byte size: 12
Total pad bytes: 1
Padding percentage: 8.33 %
OpGetByVal
  +0 &lt; 40&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
 +24 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
 +24 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
 +28 &lt;  1&gt;       bool m_mayStoreToHole
 +29 &lt;  1&gt;       bool m_outOfBounds
 +30 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
 +30 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
 +30 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
 +30 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
 +31 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
 +32 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
 +36 &lt;  4&gt;   &lt;PADDING: 4 bytes&gt;
Total byte size: 40
Total pad bytes: 5
Padding percentage: 12.50 %
OpPutByVal
  +0 &lt; 12&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
Total byte size: 12
Total pad bytes: 1
Padding percentage: 8.33 %
OpGetDirectPname
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpDiv
  +0 &lt;  4&gt; Metadata
  +0 &lt;  4&gt;     JSC::ArithProfile m_arithProfile
  +0 &lt;  4&gt;       uint32_t m_bits
Total byte size: 4
Total pad bytes: 0
OpPutByValDirect
  +0 &lt; 12&gt; Metadata
  +0 &lt; 12&gt;     JSC::ArrayProfile m_arrayProfile
  +0 &lt;  4&gt;       JSC::StructureID m_lastSeenStructureID
  +4 &lt;  1&gt;       bool m_mayStoreToHole
  +5 &lt;  1&gt;       bool m_outOfBounds
  +6 &lt; :1&gt;       bool m_mayInterceptIndexedAccesses : 1
  +6 &lt; :1&gt;       bool m_usesOriginalArrayStructures : 1
  +6 &lt; :1&gt;       bool m_didPerformFirstRunPruning : 1
  +6 &lt; :5&gt;       &lt;UNUSED BITS: 5 bits&gt;
  +7 &lt;  1&gt;       &lt;PADDING: 1 byte&gt;
  +8 &lt;  4&gt;       JSC::ArrayModes m_observedArrayModes
Total byte size: 12
Total pad bytes: 1
Padding percentage: 8.33 %
OpSub
  +0 &lt;  4&gt; Metadata
  +0 &lt;  4&gt;     JSC::ArithProfile m_arithProfile
  +0 &lt;  4&gt;       uint32_t m_bits
Total byte size: 4
Total pad bytes: 0
OpBitand
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpBitor
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpBitxor
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpToObject
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpToNumber
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpNegate
  +0 &lt;  4&gt; Metadata
  +0 &lt;  4&gt;     JSC::ArithProfile m_arithProfile
  +0 &lt;  4&gt;       uint32_t m_bits
Total byte size: 4
Total pad bytes: 0
OpBitnot
  +0 &lt; 24&gt; Metadata
  +0 &lt; 24&gt;     JSC::ValueProfile m_profile
  +0 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +0 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +0 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +16 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 24
Total pad bytes: 0
OpNewArrayWithSize
  +0 &lt; 16&gt; Metadata
  +0 &lt; 16&gt;     JSC::ArrayAllocationProfile m_arrayAllocationProfile
  +0 &lt;  1&gt;       JSC::IndexingType m_currentIndexingType
  +1 &lt;  3&gt;       &lt;PADDING: 3 bytes&gt;
  +4 &lt;  4&gt;       unsigned int m_largestSeenVectorLength
  +8 &lt;  8&gt;       JSC::JSArray * m_lastArray
Total byte size: 16
Total pad bytes: 3
Padding percentage: 18.75 %
OpNewArrayBuffer
  +0 &lt; 16&gt; Metadata
  +0 &lt; 16&gt;     JSC::ArrayAllocationProfile m_arrayAllocationProfile
  +0 &lt;  1&gt;       JSC::IndexingType m_currentIndexingType
  +1 &lt;  3&gt;       &lt;PADDING: 3 bytes&gt;
  +4 &lt;  4&gt;       unsigned int m_largestSeenVectorLength
  +8 &lt;  8&gt;       JSC::JSArray * m_lastArray
Total byte size: 16
Total pad bytes: 3
Padding percentage: 18.75 %
OpCreateThis
  +0 &lt;  8&gt; Metadata
  +0 &lt;  8&gt;     JSC::WriteBarrier&lt;JSC::JSCell, WTF::DumbPtrTraits&lt;JSC::JSCell&gt; &gt; m_cachedCallee
  +0 &lt;  8&gt;         JSC::WriteBarrierBase&lt;JSC::JSCell, WTF::DumbPtrTraits&lt;JSC::JSCell&gt; &gt; JSC::WriteBarrierBase&lt;JSC::JSCell, WTF::DumbPtrTraits&lt;JSC::JSCell&gt; &gt;
  +0 &lt;  8&gt;           JSC::WriteBarrierBase&lt;JSC::JSCell, WTF::DumbPtrTraits&lt;JSC::JSCell&gt; &gt;::StorageType m_cell
Total byte size: 8
Total pad bytes: 0
OpToThis
  +0 &lt; 32&gt; Metadata
  +0 &lt;  4&gt;   JSC::StructureID m_cachedStructureID
  +4 &lt;  4&gt;   JSC::ToThisStatus m_toThisStatus
  +8 &lt; 24&gt;     JSC::ValueProfile m_profile
  +8 &lt; 24&gt;         JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt; JSC::ValueProfileWithLogNumberOfBuckets&lt;0&gt;
  +8 &lt; 24&gt;             JSC::ValueProfileBase&lt;1&gt; JSC::ValueProfileBase&lt;1&gt;
  +8 &lt; 16&gt;               JSC::EncodedJSValue [2] m_buckets
 +24 &lt;  8&gt;               JSC::SpeculatedType m_prediction
Total byte size: 32
Total pad bytes: 0
OpAdd
  +0 &lt;  4&gt; Metadata
  +0 &lt;  4&gt;     JSC::ArithProfile m_arithProfile
  +0 &lt;  4&gt;       uint32_t m_bits
Total byte size: 4
Total pad bytes: 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537075</commentid>
    <comment_count>11</comment_count>
      <attachid>370112</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 02:46:09 -0700</bug_when>
    <thetext>Created attachment 370112
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537076</commentid>
    <comment_count>12</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 02:49:23 -0700</bug_when>
    <thetext>Attachment 370112 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537178</commentid>
    <comment_count>13</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-05-17 11:26:32 -0700</bug_when>
    <thetext>This is good stuff!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537180</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-05-17 11:26:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/50899664&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537198</commentid>
    <comment_count>15</comment_count>
      <attachid>370134</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 12:36:17 -0700</bug_when>
    <thetext>Created attachment 370134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537199</commentid>
    <comment_count>16</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 12:38:46 -0700</bug_when>
    <thetext>Attachment 370134 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537201</commentid>
    <comment_count>17</comment_count>
      <attachid>370135</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 12:45:36 -0700</bug_when>
    <thetext>Created attachment 370135
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537202</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 12:46:52 -0700</bug_when>
    <thetext>Attachment 370135 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537204</commentid>
    <comment_count>19</comment_count>
      <attachid>370136</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 13:03:21 -0700</bug_when>
    <thetext>Created attachment 370136
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537205</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 13:05:14 -0700</bug_when>
    <thetext>Attachment 370136 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 32 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537214</commentid>
    <comment_count>21</comment_count>
      <attachid>370136</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-17 13:27:14 -0700</bug_when>
    <thetext>Comment on attachment 370136
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=370136&amp;action=review

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1249
&gt; +                Structure* structure = !metadata.m_cachedStructureID ? nullptr : vm.heap.structureIDTable().get(metadata.m_cachedStructureID);

nit: It seems that the `!metadata.m_cachedStructureID` check is unnecessary here due to the break above.

&gt; Source/JavaScriptCore/bytecode/GetByIdMetadata.h:37
&gt; +// In 64bit Little endian architecture, this union shares ProtoLoad&apos;s JSObject* cachedSlot with &quot;higCountForLLIntCaching&quot; and &quot;mode&quot;.

typo: s/higCountForLLIntCaching/hitCountForLLIntCaching/

&gt; Source/JavaScriptCore/bytecode/GetByIdMetadata.h:43
&gt; +#if CPU(LITTLE_ENDIAN) &amp;&amp; CPU(ADDRESS64)
&gt;  union GetByIdModeMetadata {
&gt; +#else
&gt; +struct GetByIdModeMetadata {
&gt; +#endif

I find these ifdef&apos;s a bit confusing. I wonder if it&apos;d be better to move the mode structs out and have disjoint definitions of `GetByIdModeMetadata` in the ifdef branches.

&gt; Source/JavaScriptCore/bytecode/GetByIdMetadata.h:76
&gt; +    };

Should you also have `static_assert(sizeof(ProtoLoad) == 16);` ?

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:-752
&gt; -    metadata.m_modeMetadata.protoLoadMode.cachedSlot = slot.slotBase();

oops</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537228</commentid>
    <comment_count>22</comment_count>
      <attachid>370136</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 13:41:36 -0700</bug_when>
    <thetext>Comment on attachment 370136
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=370136&amp;action=review

Thanks!

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1249
&gt;&gt; +                Structure* structure = !metadata.m_cachedStructureID ? nullptr : vm.heap.structureIDTable().get(metadata.m_cachedStructureID);
&gt; 
&gt; nit: It seems that the `!metadata.m_cachedStructureID` check is unnecessary here due to the break above.

Right! Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/GetByIdMetadata.h:37
&gt;&gt; +// In 64bit Little endian architecture, this union shares ProtoLoad&apos;s JSObject* cachedSlot with &quot;higCountForLLIntCaching&quot; and &quot;mode&quot;.
&gt; 
&gt; typo: s/higCountForLLIntCaching/hitCountForLLIntCaching/

Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/GetByIdMetadata.h:43
&gt;&gt; +#endif
&gt; 
&gt; I find these ifdef&apos;s a bit confusing. I wonder if it&apos;d be better to move the mode structs out and have disjoint definitions of `GetByIdModeMetadata` in the ifdef branches.

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/bytecode/GetByIdMetadata.h:76
&gt;&gt; +    };
&gt; 
&gt; Should you also have `static_assert(sizeof(ProtoLoad) == 16);` ?

Added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537229</commentid>
    <comment_count>23</comment_count>
      <attachid>370144</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 13:43:42 -0700</bug_when>
    <thetext>Created attachment 370144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537231</commentid>
    <comment_count>24</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 13:46:04 -0700</bug_when>
    <thetext>Attachment 370144 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537239</commentid>
    <comment_count>25</comment_count>
      <attachid>370147</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 13:54:40 -0700</bug_when>
    <thetext>Created attachment 370147
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537240</commentid>
    <comment_count>26</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 13:57:34 -0700</bug_when>
    <thetext>Attachment 370147 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537247</commentid>
    <comment_count>27</comment_count>
      <attachid>370149</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 14:09:12 -0700</bug_when>
    <thetext>Created attachment 370149
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537248</commentid>
    <comment_count>28</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-05-17 14:11:46 -0700</bug_when>
    <thetext>Attachment 370149 did not pass style-queue:


ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:521:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2579:  Non-label code inside switch statements should be indented.  [whitespace/indent] [4]
Total errors found: 2 in 33 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537343</commentid>
    <comment_count>29</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-17 17:27:17 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #13)
&gt; This is good stuff!

Thanks! Your malloc zone patch was super helpful to find what we should look into closely :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1537877</commentid>
    <comment_count>30</comment_count>
      <attachid>370149</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2019-05-21 07:43:02 -0700</bug_when>
    <thetext>Comment on attachment 370149
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=370149&amp;action=review

r=me

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        If we shrink Metadata, we can get peak memory footprint in Gmail.

Is this better wording: &quot;If we shrink Metadata, we can *reduce the* peak memory footprint in Gmail.&quot;?

&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        This patch attempts to shrink Metadata. This patch first focus on low hanging fruits: it does not include the change removing OSR exit JSValue in ValueProfile.

I think you want to say &quot;This patch shrinks Metatdata.&quot;

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:749
&gt; +    metadata.m_modeMetadata.mode = GetByIdMode::ProtoLoad; // This must be first set. In 64bit architecture, this field is shared with protoLoadMode.cachedSlot.

Instead of relying on convention here, it may make sense to have a setting function in GetByIdMetadata.h that sets all values in the proper order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538342</commentid>
    <comment_count>31</comment_count>
      <attachid>370149</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 13:29:48 -0700</bug_when>
    <thetext>Comment on attachment 370149
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=370149&amp;action=review

&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:836
&gt; +        ConcurrentJSLocker locker(codeBlock-&gt;m_lock);

nice! I spotted this bug when I was doing LLInt OSR exit:
https://bugs.webkit.org/show_bug.cgi?id=198012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538344</commentid>
    <comment_count>32</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-05-22 13:30:10 -0700</bug_when>
    <thetext>*** Bug 198012 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538347</commentid>
    <comment_count>33</comment_count>
      <attachid>370149</attachid>
    <who name="Tadeu Zagallo">tzagallo</who>
    <bug_when>2019-05-22 13:32:05 -0700</bug_when>
    <thetext>Comment on attachment 370149
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=370149&amp;action=review

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:836
&gt;&gt; +        ConcurrentJSLocker locker(codeBlock-&gt;m_lock);
&gt; 
&gt; nice! I spotted this bug when I was doing LLInt OSR exit:
&gt; https://bugs.webkit.org/show_bug.cgi?id=198012

lol, one more haha: https://bugs.webkit.org/show_bug.cgi?id=198120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538442</commentid>
    <comment_count>34</comment_count>
      <attachid>370149</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-22 16:09:17 -0700</bug_when>
    <thetext>Comment on attachment 370149
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=370149&amp;action=review

&gt;&gt; Source/JavaScriptCore/ChangeLog:13
&gt;&gt; +        If we shrink Metadata, we can get peak memory footprint in Gmail.
&gt; 
&gt; Is this better wording: &quot;If we shrink Metadata, we can *reduce the* peak memory footprint in Gmail.&quot;?

Right. Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:15
&gt;&gt; +        This patch attempts to shrink Metadata. This patch first focus on low hanging fruits: it does not include the change removing OSR exit JSValue in ValueProfile.
&gt; 
&gt; I think you want to say &quot;This patch shrinks Metatdata.&quot;

Yeah, changed.

&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:749
&gt;&gt; +    metadata.m_modeMetadata.mode = GetByIdMode::ProtoLoad; // This must be first set. In 64bit architecture, this field is shared with protoLoadMode.cachedSlot.
&gt; 
&gt; Instead of relying on convention here, it may make sense to have a setting function in GetByIdMetadata.h that sets all values in the proper order.

Sounds good! Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:836
&gt;&gt;&gt; +        ConcurrentJSLocker locker(codeBlock-&gt;m_lock);
&gt;&gt; 
&gt;&gt; nice! I spotted this bug when I was doing LLInt OSR exit:
&gt;&gt; https://bugs.webkit.org/show_bug.cgi?id=198012
&gt; 
&gt; lol, one more haha: https://bugs.webkit.org/show_bug.cgi?id=198120

We independently found the same issue three times, lol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1538465</commentid>
    <comment_count>35</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-22 16:42:42 -0700</bug_when>
    <thetext>Committed r245658: &lt;https://trac.webkit.org/changeset/245658&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539244</commentid>
    <comment_count>36</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-25 20:42:00 -0700</bug_when>
    <thetext>This is getting 7% JetStream2/json-parse-inspector improvement in iPad Pro 2 too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1540234</commentid>
    <comment_count>37</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-05-29 20:41:11 -0700</bug_when>
    <thetext>Size of MetadataTable is largely reduced right now due to this patch and UnlinkedMetadataTable shrinking patch.


MetadataTable_0x116c69000                                      242.0M      44.7M      32.2M         0K      25616      4380K      28.0M     87%      46

4MB just after full GC.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370108</attachid>
            <date>2019-05-17 00:55:24 -0700</date>
            <delta_ts>2019-05-17 02:46:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517005523.patch</filename>
            <type>text/plain</type>
            <size>67879</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1MzE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTI4NjMxODVkYzhiZTVlYThkODk1NzBmZDU5MTkzMzNlNmM4MTRkLi45MDIzNzJkMGQxY2U0ZmY3
MjBjZTAyZWYyODFlMzYwMmIxOTNkMzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTAgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6Cisg
ICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6QXJyYXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6
QXJyYXlQcm9maWxlOjpieXRlY29kZU9mZnNldCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICog
Ynl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQp
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXpl
TExJbnRJbmxpbmVDYWNoZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmdldEFycmF5UHJv
ZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRD
b3VudExpdmVuZXNzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxl
cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dmFsdWVQcm9maWxlRm9yQXJndW1lbnQpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9ja0lubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoVmFsdWVQcm9m
aWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQcm9maWxlKToKKyAg
ICAgICAgKiBieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaDoKKyAgICAgICAgKiBieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZy
b21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAgICAg
ICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5r
SW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxlZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxlZSBj
b25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVuQ2Fs
bGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZv
KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0
cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAoSlNDOjpMTEludFByb3RvdHlwZUxvYWRB
ZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUpOgorICAg
ICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmg6CisgICAgICAgIChKU0M6
OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSk6CisgICAg
ICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjprZXkgY29uc3QpOgorICAgICAgICAq
IGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuaDoKKyAgICAgICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6
YnVmZmVyKToKKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mQWxsb2Nh
dG9yKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpvZmZzZXRP
ZlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6
Y2xlYXIpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6OnZpc2l0
QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnNldFBy
b3RvdHlwZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3Rv
dHlwZTo6cHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVX
aXRoUHJvdG90eXBlOjpjbGVhcik6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6OnNldFByb3RvdHlwZSk6CisgICAgICAgIChK
U0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcik6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVy
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZz
ZXRPZklubGluZUNhcGFjaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmlzTnVsbCk6IERlbGV0ZWQuCisgICAgICAg
IChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpzdHJ1Y3R1cmUpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6cHJvdG90eXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmlubGluZUNhcGFjaXR5KTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmNsZWFyKTog
RGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnZpc2l0QWdn
cmVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
PERlcml2ZWQ+Ojppbml0aWFsaXplUHJvZmlsZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9j
YXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudCk6
CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmls
ZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3Nz
aWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29kZS9W
YWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6VmFsdWVQcm9m
aWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRvdGFsTnVtYmVyT2ZT
YW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6aXNTYW1wbGVk
QmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFzZTo6ZHVtcCk6Cisg
ICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbik6
CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxWYWx1ZVByb2ZpbGUp
OgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzOjpWYWx1
ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9m
aWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVByb2ZpbGVCeXRlY29k
ZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVDcmVhdGVU
aGlzKToKKyAgICAgICAgKiBmdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oOgorICAgICAg
ICAqIGppdC9KSVRPcGNvZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNo
KToKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGNvZGVzMzJfNjQu
Y3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAgICAgICAoSlNDOjpK
SVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMpOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9f
dGhpcyk6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9K
SVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9nZXRfYnlf
aWQpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbToKKyAgICAgICAg
KiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6U0xPV19QQVRIX0RFQ0wpOgorICAgICAg
ICAqIHJ1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oOgorICAgICAgICAqIHRvb2xzL0hlYXBWZXJp
Zmllci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBWZXJpZmllcjo6dmFsaWRhdGVKU0NlbGwpOgor
CiAyMDE5LTA1LTE0ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEZpeCBpc3N1ZSB3aXRoIGJ5dGVPZmZzZXQgb24gQVJNNjRFCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0MmE1
NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uMmYyNmE0OWRkNDRmZDY4ZDk2YzNjZmIxMDJkYzhm
M2M5MWE4YTc4NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Fy
cmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVBy
b2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9jay5o
IgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFycmF5
UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAgIEFy
cmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1pdHM8
dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFycmF5
UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFjY2Vz
c2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9tYXlJ
bnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2luYWxB
cnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBydW5p
bmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1Y3R1
cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RTZWVu
U3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkgeyBy
ZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5U3Rv
cmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjQ3LDcgKzIzOCw2
IEBAIGNsYXNzIEFycmF5UHJvZmlsZSB7CiAgICAgCiAgICAgc3RhdGljIFN0cnVjdHVyZSogcG9s
eW1vcnBoaWNTdHJ1Y3R1cmUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxTdHJ1Y3R1cmUqPihyZWlu
dGVycHJldF9jYXN0PHZvaWQqPigxKSk7IH0KICAgICAKLSAgICB1bnNpZ25lZCBtX2J5dGVjb2Rl
T2Zmc2V0OwogICAgIFN0cnVjdHVyZUlEIG1fbGFzdFNlZW5TdHJ1Y3R1cmVJRCB7IDAgfTsKICAg
ICBib29sIG1fbWF5U3RvcmVUb0hvbGUgeyBmYWxzZSB9OyAvLyBUaGlzIGZsYWcgbWF5IGJlY29t
ZSBvdmVybG9hZGVkIHRvIGluZGljYXRlIG90aGVyIHNwZWNpYWwgY2FzZXMgdGhhdCB3ZXJlIGVu
Y291bnRlcmVkIGR1cmluZyBhcnJheSBhY2Nlc3MsIGFzIGl0IGRlcGVuZHMgb24gaW5kZXhpbmcg
dHlwZS4gU2luY2Ugd2UgY3VycmVudGx5IGhhdmUgYmFzaWNhbGx5IGp1c3Qgb25lIGluZGV4aW5n
IHR5cGUgKHR3byB2YXJpYW50cyBvZiBBcnJheVN0b3JhZ2UpLCB0aGlzIGZsYWcgZm9yIG5vdyBq
dXN0IG1lYW5zIGV4YWN0bHkgd2hhdCBpdHMgbmFtZSBpbXBsaWVzLgogICAgIGJvb2wgbV9vdXRP
ZkJvdW5kcyB7IGZhbHNlIH07CkBAIC0yNjIsNiArMjUyLDQgQEAgY2xhc3MgQXJyYXlQcm9maWxl
IHsKICNlbmRpZgogfTsKIAotdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8QXJyYXlQcm9maWxlLCA0
PiBBcnJheVByb2ZpbGVWZWN0b3I7Ci0KIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIKaW5kZXggMDY5NWEyNTA3YjYy
Mzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uOGFlYmYzYmFkNmVkMzYwM2MxZjgxZjg4ZGZl
MTFmNGRjMjYxZTY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgc3JjRHN0OiBWaXJ0dWFs
UmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBjYWNoZWRTdHJ1Y3R1
cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwKKyAgICAgICAgY2FjaGVkU3RydWN0dXJl
SUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNTdGF0dXM6IFRvVGhpc1N0YXR1cywKICAg
ICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KQEAgLTQxNCw4ICs0MTQsNiBAQAog
ICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAgfSwKICAgICBtZXRhZGF0YTogewotICAg
ICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAgaGl0Q291bnRGb3JMTEludENhY2hpbmc6
IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAg
ICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uYzI4MWEwYTliNTU3ZjdmZDIxMGNkZjYwZGM0Y2E5NmMzMWQ5NjQ0OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQg
PyBudWxscHRyIDogdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTElu
dCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0
YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZvKFsmXShM
TEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8uY2FsbGVlLmdl
dCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2VkKCkgJiYgIXZtLmhlYXAu
aXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTElu
dCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLnVu
bGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5rSW5mby5sYXN0U2VlbkNh
bGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0
KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01h
cmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAgICAgICAgICBjYWxsTGlu
a0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQogCkBAIC0yNTg1LDcgKzI1
NzgsNyBAQCBBcnJheVByb2ZpbGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKGNvbnN0IENv
bmN1cnJlbnRKU0xvY2tlciYsIHVuc2lnbmVkIGJ5dAogICAgIGNhc2UgT3BHZXRCeUlkOjpvcGNv
ZGVJRDogewogICAgICAgICBhdXRvIGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJ
ZD4oKTsKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsK
LSAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgp
CisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2Rl
OjpBcnJheUxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpA
QCAtMjYzMywxNiArMjYyNiwxNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlv
bnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25BcgogICAgIG51bWJl
ck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcyA9IDA7CiAgICAgbnVtYmVyT2ZTYW1wbGVz
SW5Qcm9maWxlcyA9IDA7IC8vIElmIHRoaXMgZGl2aWRlZCBieSBWYWx1ZVByb2ZpbGU6Om51bWJl
ck9mQnVja2V0cyBlcXVhbHMgbnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkgdGhlbiB2YWx1ZSBwcm9m
aWxlcyBhcmUgZnVsbC4KIAotICAgIGZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmls
ZSYgcHJvZmlsZSkgeworICAgIGZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYg
cHJvZmlsZSwgYm9vbCBpc0FyZ3VtZW50KSB7CiAgICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMg
PSBwcm9maWxlLnRvdGFsTnVtYmVyT2ZTYW1wbGVzKCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQo
VmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMgPT0gMSk7CiAgICAgICAgIGlmIChudW1TYW1w
bGVzID4gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1w
bGVzID0gVmFsdWVQcm9maWxlOjpudW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJv
ZmlsZXMgdGhhdCBhcmUgZXh0cmVtZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAg
ICAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwotICAgICAgICBp
ZiAocHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgeworICAgICAgICBpZiAoaXNBcmd1bWVu
dCkgewogICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2Vy
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5u
dW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLm1fcHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKKyAg
ICAgICAgaWYgKHByb2ZpbGUubnVtYmVyT2ZTYW1wbGVzKCkgfHwgcHJvZmlsZS5pc1NhbXBsZWRC
ZWZvcmUoKSkKICAgICAgICAgICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwogICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwog
ICAgIH0pOwpAQCAtMjY1MCw3ICsyNjQ0LDcgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXIKICAg
ICBpZiAoYXV0byogcmFyZURhdGEgPSBtX3JhcmVEYXRhLmdldCgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgcHJvZmlsZUJ1Y2tldCA6IHJhcmVEYXRhLT5tX2NhdGNoUHJvZmlsZXMpIHsKICAgICAg
ICAgICAgIHByb2ZpbGVCdWNrZXQtPmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5k
JiBwcm9maWxlKSB7Ci0gICAgICAgICAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVw
ZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAg
ICAgfQpAQCAtMjgwMCwxMiArMjc5NCwxMSBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNh
bEJpbmRpbmdVcGRhdGUoKQogdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIHsK
ICAgICBkYXRhTG9nKCJWYWx1ZVByb2ZpbGUgZm9yICIsICp0aGlzLCAiOlxuIik7Ci0gICAgZm9y
RWFjaFZhbHVlUHJvZmlsZShbXShWYWx1ZVByb2ZpbGUmIHByb2ZpbGUpIHsKLSAgICAgICAgaWYg
KHByb2ZpbGUubV9ieXRlY29kZU9mZnNldCA8IDApIHsKLSAgICAgICAgICAgIEFTU0VSVChwcm9m
aWxlLm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGFy
ZyA9ICV1OiAiLCBpKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiICAg
YmMgPSAlZDogIiwgcHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBmb3JFYWNoVmFsdWVQ
cm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSwgYm9vbCBpc0FyZ3VtZW50KSB7CisgICAg
ICAgIGlmIChpc0FyZ3VtZW50KQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGFyZzogIik7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRhdGFMb2dGKCIgICBiYzogIik7CiAgICAgICAgIGlm
ICghcHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSAmJiBwcm9maWxlLm1fcHJlZGljdGlvbiA9PSBT
cGVjTm9uZSkgewogICAgICAgICAgICAgZGF0YUxvZ0YoIjxlbXB0eT5cbiIpOwogICAgICAgICAg
ICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
aW5kZXggYTkzYzM2ZmI5MThmM2IzMGNhYjBjNzk4ZTYxZTcwY2E1OTFiMThjZi4uZjVkYmZlYzY5
NGJkMTQ3MmI5OWFjNWYwZWIzMWQwZDBhZDBjZmZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaApAQCAtNDc4LDcgKzQ3OCw2IEBAIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBKU0NlbGwgewogICAgIHsKICAgICAgICAgQVNTRVJUKHZtKCktPmNhblVzZUpJ
VCgpKTsgLy8gVGhpcyBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSB2YXJpb3VzIEpJVCBjb21waWxl
cnMgb3IgcGxhY2VzIHRoYXQgZmlyc3QgY2hlY2sgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmls
ZXMgYmVmb3JlIGNhbGxpbmcgdGhpcy4KICAgICAgICAgVmFsdWVQcm9maWxlJiByZXN1bHQgPSBt
X2FyZ3VtZW50VmFsdWVQcm9maWxlc1thcmd1bWVudEluZGV4XTsKLSAgICAgICAgQVNTRVJUKHJl
c3VsdC5tX2J5dGVjb2RlT2Zmc2V0ID09IC0xKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9CiAKQEAgLTk3NCw3ICs5NzMsNyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICBWTSogbV92bTsKIAogICAgIGNvbnN0IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9p
bnRlciB7IG51bGxwdHIgfTsKLSAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0lu
Zm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0xM
SW50Q2FsbHM7CisgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBQYWNr
ZWRSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJbnRDYWxs
czsKICAgICBTdHJ1Y3R1cmVXYXRjaHBvaW50TWFwIG1fbGxpbnRHZXRCeUlkV2F0Y2hwb2ludE1h
cDsKICAgICBSZWZQdHI8SklUQ29kZT4gbV9qaXRDb2RlOwogI2lmIEVOQUJMRShKSVQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAppbmRl
eCBmMDBiMzk3ODczMmU0ZjY3ZGQyZTU1NjEwNDc3ZmRjMmY3YTVjYWNiLi4wYTdlYjk1NTcxZDFj
N2U4ZTc1MDQyN2YwZTE3M2FkYTNiMzc4ZGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKQEAgLTM1LDExICszNSwxMSBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPgogdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2Zp
bGUoY29uc3QgRnVuY3RvciYgZnVuYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMoKTsgKytpKQotICAgICAgICBmdW5jKHZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGkpKTsKKyAgICAgICAgZnVuYyh2YWx1ZVByb2ZpbGVGb3JBcmd1
bWVudChpKSwgdHJ1ZSk7CiAKICAgICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJVChf
X29wKSBcCi0gICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRh
KSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlKTsgfSk7CisgICAgbV9tZXRhZGF0YS0+Zm9yRWFj
aDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBm
YWxzZSk7IH0pOwogCiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUo
VklTSVQpCiAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hBcnJheVBy
b2ZpbGUoY29uc3QgRnVuY3RvciYgZnVuYykKIHsKICAgICBpZiAobV9tZXRhZGF0YSkgewogICAg
ICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPE9wR2V0QnlJZD4oWyZdIChhdXRvJiBtZXRhZGF0YSkg
ewotICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlM
ZW5ndGgpCisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBH
ZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCiAgICAgICAgICAgICAgICAgZnVuYyhtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKICAgICAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0
YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEu
aAppbmRleCBkYzQzNGU2YzRiN2ZkNGVkODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi5kMTk0MWYw
M2IwNmMxNzRhZGYyNThhMzBhMjZkOTM0MTliZjJlOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsNTggQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0g
ICAgRGVmYXVsdCA9IDAsCi0gICAgVW5zZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAg
UHJvdG9Mb2FkID0gMCwKKyAgICBEZWZhdWx0ID0gMSwKKyAgICBVbnNldCA9IDIsCiAgICAgQXJy
YXlMZW5ndGggPSAzLAogfTsKIAogdW5pb24gR2V0QnlJZE1vZGVNZXRhZGF0YSB7CiAgICAgR2V0
QnlJZE1vZGVNZXRhZGF0YSgpCi0gICAgeyB9CisgICAgeworICAgICAgICBkZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRCA9IDA7CisgICAgICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7Cisg
ICAgICAgIGRlZmF1bHRNb2RlLnBhZGRpbmcxID0gMDsKKyAgICAgICAgbW9kZSA9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0OworICAgICAgICBoaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IE9wdGlvbnM6
OnByb3RvdHlwZUhpdENvdW50Rm9yTExJbnRDYWNoaW5nKCk7CisgICAgfQogCiAgICAgc3RydWN0
IERlZmF1bHQgewogICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKICAgICAgICAgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OwotICAgIH0gZGVmYXVsdE1vZGU7CisgICAgICAgIHVu
c2lnbmVkIHBhZGRpbmcxOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoRGVmYXVs
dCkgPT0gMTIpOwogCiAgICAgc3RydWN0IFVuc2V0IHsKICAgICAgICAgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQ7Ci0gICAgfSB1bnNldE1vZGU7CisgICAgICAgIHVuc2lnbmVkIHBhZGRpbmcxOwor
ICAgICAgICB1bnNpZ25lZCBwYWRkaW5nMjsKKyAgICB9OworICAgIHN0YXRpY19hc3NlcnQoc2l6
ZW9mKFVuc2V0KSA9PSAxMik7CisKKyAgICBzdHJ1Y3QgQXJyYXlMZW5ndGggeworICAgICAgICBB
cnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOworICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXpl
b2YoQXJyYXlMZW5ndGgpID09IDEyKTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIHVuaW9uIHsK
KyAgICAgICAgICAgIERlZmF1bHQgZGVmYXVsdE1vZGU7CisgICAgICAgICAgICBVbnNldCB1bnNl
dE1vZGU7CisgICAgICAgICAgICBBcnJheUxlbmd0aCBhcnJheUxlbmd0aE1vZGU7CisgICAgICAg
IH07CisgICAgICAgIHVpbnQxNl90IHBhZGRpbmczOworICAgICAgICBHZXRCeUlkTW9kZSBtb2Rl
OworICAgICAgICB1aW50OF90IGhpdENvdW50Rm9yTExJbnRDYWNoaW5nOworICAgIH07CiAKICAg
ICBzdHJ1Y3QgUHJvdG9Mb2FkIHsKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAg
ICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKICAgICAgICAgSlNPYmplY3QqIGNh
Y2hlZFNsb3Q7CiAgICAgfSBwcm90b0xvYWRNb2RlOwotCi0gICAgc3RydWN0IEFycmF5TGVuZ3Ro
IHsKLSAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKLSAgICB9IGFycmF5TGVuZ3Ro
TW9kZTsKIH07CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAx
Nik7CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCmluZGV4IDZlNGU4YmZkYmUxNzVjMDZiZjk4MmU4MzQw
ZWM2NDJjMzljMjAxODYuLmRiOWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2ODNkZGVhZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQKICAgICAgICAgYXV0
byYgbWV0YWRhdGEgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHByb2Zp
bGVkQmxvY2spOwogICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBqdXN0IGJhaWwgaWYg
d2Ugc2VlIGEgZ2V0X2J5X2lkX3Byb3RvX2xvYWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgwMzkKLSAgICAgICAgaWYgKG1ldGFkYXRhLm1f
bW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLm1vZGUgIT0gR2V0QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgICAgIHN0cnVjdHVy
ZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAg
ICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50Q2FsbExpbmtJbmZvLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRDYWxsTGlua0luZm8uaAppbmRleCA4NGI1YzExYzU4NjY1ZDMyYmJkNWMyMjBkOWE5MTgzODI4
NGExZTE2Li41YzRkMzU3ZTk3OWJiZDAyZjNhZmZmMzRhNGI2MjYxOTkyOTBjZDFmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaApA
QCAtMzQsMTAgKzM0LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CiAKLXN0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxMTEludENhbGxMaW5rSW5mbz4gewotICAgIExMSW50Q2FsbExpbmtJbmZvKCkKLSAgICB7Ci0g
ICAgfQorY2xhc3MgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxO
b2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHVubGlu
a2VkQml0ID0gMHgxOworCisgICAgTExJbnRDYWxsTGlua0luZm8oKSA9IGRlZmF1bHQ7CiAgICAg
CiAgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKICAgICB7CkBAIC00NSwxOSArNDgsNDcgQEAgc3Ry
dWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50
Q2FsbExpbmtJbmZvPiB7CiAgICAgICAgICAgICByZW1vdmUoKTsKICAgICB9CiAgICAgCi0gICAg
Ym9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuICEhY2FsbGVlOyB9CisgICAgYm9vbCBpc0xpbmtlZCgp
IGNvbnN0IHsgcmV0dXJuICEobV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgJiB1
bmxpbmtlZEJpdCk7IH0KICAgICAKKworICAgIHZvaWQgbGluayhWTSYgdm0sIEpTQ2VsbCogb3du
ZXIsIEpTT2JqZWN0KiBjYWxsZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBjb2RlUHRyKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICBy
ZW1vdmUoKTsKKyAgICAgICAgbV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgPSBi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihjYWxsZWUpOworICAgICAgICB2bS5oZWFwLndyaXRlQmFy
cmllcihvd25lciwgY2FsbGVlKTsKKyAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQ
dHI7CisgICAgfQorCiAgICAgdm9pZCB1bmxpbmsoKQogICAgIHsKLSAgICAgICAgY2FsbGVlLmNs
ZWFyKCk7Ci0gICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
PEpTRW50cnlQdHJUYWc+KCk7CisgICAgICAgIC8vIE1ha2UgbGluayBpbnZhbGlkYXRlZC4gSXQg
d29ya3MgYmVjYXVzZSBMTEludCB0ZXN0cyB0aGUgZ2l2ZW4gY2FsbGVlIHdpdGggdGhpcyBwb2lu
dGVyLiBCdXQgaXQgaXMgc3RpbGwgdmFsaWQgYXMgbGFzdFNlZW5DYWxsZWUhCisgICAgICAgIG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0IHw9IHVubGlua2VkQml0OworICAgICAg
ICBtX21hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJU
YWc+KCk7CiAgICAgICAgIGlmIChpc09uTGlzdCgpKQogICAgICAgICAgICAgcmVtb3ZlKCk7CiAg
ICAgfQotICAgIAotICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4gY2FsbGVlOwotICAgIFdyaXRl
QmFycmllcjxKU09iamVjdD4gbGFzdFNlZW5DYWxsZWU7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyPEpTRW50cnlQdHJUYWc+IG1hY2hpbmVDb2RlVGFyZ2V0OworCisgICAgSlNPYmplY3QqIGNh
bGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICBpZiAoIWlzTGlua2VkKCkpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU09iamVjdCo+
KG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0KTsKKyAgICB9CisKKyAgICBKU09i
amVjdCogbGFzdFNlZW5DYWxsZWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDxKU09iamVjdCo+KG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ICYg
fnVubGlua2VkQml0KTsKKyAgICB9CisKKyAgICB2b2lkIGNsZWFyTGFzdFNlZW5DYWxsZWUoKQor
ICAgIHsKKyAgICAgICAgbV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgPSB1bmxp
bmtlZEJpdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdWludHB0cl90IG1fY2FsbGVlT3JMYXN0
U2VlbkNhbGxlZVdpdGhMaW5rQml0IHsgdW5saW5rZWRCaXQgfTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tYWNoaW5lQ29kZVRhcmdldDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1
Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCAwZWY2YTU1YzljNzE5NjAzZjFhMmUzOGI1ODA1NjZm
MGEyNDY3YmUxLi41N2FiYjlhNGMwM2YyYTlmZjUxZWNlZGNkYmYyMTRlODRhOTQwOGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2Fk
QWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50
LmNwcApAQCAtNjUsNyArNjUsOCBAQCB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwgY29uc3QgRgogCiB2b2lkIExM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdl
dEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0YSkKIHsKLSAgICBtZXRhZGF0
YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKKyAgICAvLyBLZWVwIGhpdENvdW50Rm9y
TExJbnRDYWNoaW5nIHZhbHVlLgorICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBH
ZXRCeUlkTW9kZTo6RGVmYXVsdDsKICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0
TW9kZS5jYWNoZWRPZmZzZXQgPSAwOwogICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1
bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKaW5kZXggOWMzYjA2ODQy
NzAzNGIwODliYTA5OGU4MjJmZmQwZTE2ZWYzNTA5Ni4uOGY2MGViMGY0MGFjM2IxNmQ2YWIwM2Rh
ZGRjNjIyODg5Y2ViNGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKQEAgLTEyOSwxNyArMTI5LDE4IEBA
IHN0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSA6IHB1YmxpYyBNaW5pbWFsVmFsdWVQcm9m
aWxlIHsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUo
Y29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkKLSAgICAgICAgOiBNaW5pbWFs
VmFsdWVQcm9maWxlKGtleS5ieXRlY29kZU9mZnNldCgpKQotICAgICAgICAsIG1fb3BlcmFuZChr
ZXkub3BlcmFuZCgpKQorICAgICAgICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoKQorICAgICAgICAs
IG1fa2V5KGtleSkKICAgICB7CiAgICAgfQogICAgIAogICAgIExhenlPcGVyYW5kVmFsdWVQcm9m
aWxlS2V5IGtleSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGVLZXkobV9ieXRlY29kZU9mZnNldCwgbV9vcGVyYW5kKTsKKyAgICAgICAgcmV0dXJu
IG1fa2V5OwogICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV9vcGVyYW5kOworICAg
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IG1fa2V5OwogICAgIAogICAgIHR5cGVkZWYgU2Vn
bWVudGVkVmVjdG9yPExhenlPcGVyYW5kVmFsdWVQcm9maWxlLCA4PiBMaXN0OwogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCmluZGV4IGE1ZDQx
MjFiMWQ0MWQxNjFiZjI2NTQyZTA5Mjg2Y2ZiZDk5Mzk1YjguLjk1NGQwYmExNmQ3ODIxMDM5N2Jj
ZmZmOTQ4Njg5ODNiYTIwMmM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGFkYXRhVGFibGUuaApAQCAtODgsMTEgKzg4LDYgQEAgY2xhc3MgTWV0YWRhdGFUYWJs
ZSB7CiAgICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7CiAgICAgfQogCi0gICAgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQqIGJ1ZmZlcigpCi0gICAgewotICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0Kj4odGhpcyk7Ci0gICAg
fQotCiBwcml2YXRlOgogICAgIE1ldGFkYXRhVGFibGUoVW5saW5rZWRNZXRhZGF0YVRhYmxlJik7
CiAKQEAgLTEwMSw2ICs5NiwxMSBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKICAgICAgICAgcmV0
dXJuICpiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSo+KChi
aXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpIC0gc2l6ZW9mKFVubGlua2VkTWV0YWRhdGFUYWJs
ZTo6TGlua2luZ0RhdGEpKSk7CiAgICAgfQogCisgICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpP
ZmZzZXQqIGJ1ZmZlcigpCisgICAgeworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlu
a2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0Kj4odGhpcyk7CisgICAgfQorCiAgICAgQUxXQVlTX0lO
TElORSB1aW50OF90KiBnZXRJbXBsKHVuc2lnbmVkIGkpCiAgICAgewogICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIGJ1ZmZlcigpW2ldOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUu
aAppbmRleCBhNzA3NTNhN2I5OTY0ZGM4YzVhZjYxODNmMzgwMmUwNTY0ZTVkZThjLi5mNTY3OWM5
M2U1Y2UwZDRjNWJiMTQ4YWUzNWM3MjhlNTMyMzMzMjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaApAQCAt
MzUsMTcgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBGdW5jdGlvblJhcmVEYXRh
OwogCi1jbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBE
ZXJpdmVkPgorY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlIHsKICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgotICAgIHN0YXRpYyBwdHJkaWZm
X3Qgb2Zmc2V0T2ZBbGxvY2F0b3IoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUsIG1fYWxsb2NhdG9yKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zm
c2V0T2ZTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUsIG1fc3RydWN0dXJlKTsgfQotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZJ
bmxpbmVDYXBhY2l0eSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSwgbV9pbmxpbmVDYXBhY2l0eSk7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNl
dE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZSwgbV9hbGxvY2F0b3IpOyB9CisgICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRP
ZlN0cnVjdHVyZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZUJhc2UsIG1fc3RydWN0dXJlKTsgfQogCi0gICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
KQotICAgICAgICA6IG1faW5saW5lQ2FwYWNpdHkoMCkKLSAgICB7Ci0gICAgfQorICAgIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlQmFzZSgpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNOdWxsKCkg
eyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAKQEAgLTU4LDM3ICs1NSw3NCBAQCBjbGFzcyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAg
ICAgICByZXR1cm4gc3RydWN0dXJlOwogICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgY2xl
YXIoKQorICAgIHsKKyAgICAgICAgbV9hbGxvY2F0b3IgPSBBbGxvY2F0b3IoKTsKKyAgICAgICAg
bV9zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUKGlzTnVsbCgpKTsKKyAgICB9CisK
KyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQorICAgIHsKKyAg
ICAgICAgdmlzaXRvci5hcHBlbmQobV9zdHJ1Y3R1cmUpOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICB1bnNpZ25lZCBwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiwgSlNPYmplY3QqIHBy
b3RvdHlwZSk7CisKKyAgICBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7IC8vIFByZWNvbXB1dGVkIHRv
IG1ha2UgdGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVkIGNvZGUuCisgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7Cit9OworCitjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSA6IHB1YmxpYyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVCYXNlPE9iamVjdEFsbG9jYXRpb25Qcm9maWxlPjsKKworICAgIE9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKCkgPSBkZWZhdWx0OworCisgICAgdXNpbmcgQmFzZTo6Y2xlYXI7CisgICAgdXNp
bmcgQmFzZTo6dmlzaXRBZ2dyZWdhdGU7CisKKyAgICB2b2lkIHNldFByb3RvdHlwZShWTSYsIEpT
Q2VsbCosIEpTT2JqZWN0KikgeyB9Cit9OworCitjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGUgOiBwdWJsaWMgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZT4geworcHVibGljOgorICAgIHVzaW5nIEJh
c2UgPSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVX
aXRoUHJvdG90eXBlPjsKKworICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlw
ZSgpID0gZGVmYXVsdDsKKwogICAgIEpTT2JqZWN0KiBwcm90b3R5cGUoKQogICAgIHsKICAgICAg
ICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IG1fcHJvdG90eXBlLmdldCgpOwogICAgICAgICBXVEY6
OmxvYWRMb2FkRmVuY2UoKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9Ci0gICAg
dW5zaWduZWQgaW5saW5lQ2FwYWNpdHkoKSB7IHJldHVybiBtX2lubGluZUNhcGFjaXR5OyB9Ci0K
IAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAgICAgICAgbV9hbGxvY2F0b3IgPSBBbGxvY2F0
b3IoKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgQmFzZTo6Y2xlYXIo
KTsKICAgICAgICAgbV9wcm90b3R5cGUuY2xlYXIoKTsKLSAgICAgICAgbV9pbmxpbmVDYXBhY2l0
eSA9IDA7CiAgICAgICAgIEFTU0VSVChpc051bGwoKSk7CiAgICAgfQogCiAgICAgdm9pZCB2aXNp
dEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7Ci0gICAgICAgIHZpc2l0b3Iu
YXBwZW5kKG1fc3RydWN0dXJlKTsKKyAgICAgICAgQmFzZTo6dmlzaXRBZ2dyZWdhdGUodmlzaXRv
cik7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fcHJvdG90eXBlKTsKICAgICB9CiAKLXByaXZh
dGU6Ci0gICAgdW5zaWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChWTSYsIEpTT2Jq
ZWN0KiBwcm90b3R5cGUpOworICAgIHZvaWQgc2V0UHJvdG90eXBlKFZNJiB2bSwgSlNDZWxsKiBv
d25lciwgSlNPYmplY3QqIG9iamVjdCkKKyAgICB7CisgICAgICAgIG1fcHJvdG90eXBlLnNldCh2
bSwgb3duZXIsIG9iamVjdCk7CisgICAgfQogCi0gICAgQWxsb2NhdG9yIG1fYWxsb2NhdG9yOyAv
LyBQcmVjb21wdXRlZCB0byBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIGdlbmVyYXRlZCBjb2RlLgot
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworcHJpdmF0ZToKICAgICBX
cml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcHJvdG90eXBlOwotICAgIHVuc2lnbmVkIG1faW5saW5l
Q2FwYWNpdHk7CiB9OwogCisKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVJbmxpbmVzLmgKaW5kZXggNDk5OTEyMWIxNjYwNjQzYzg1OTdlMzIwYTBhNjI1ZGRjMmM1ZDY4
Mi4uZjExYzRjYzRmNWY0M2FhNmY3MzQ3ODU0NDBhZGY3YTBiZTgxODkzNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5s
aW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0
aW9uUHJvZmlsZUlubGluZXMuaApAQCAtMzEsMTIgKzMxLDExIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCi1BTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxp
emVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxsKiBv
d25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBhY2l0
eSwgSlNGdW5jdGlvbiogY29uc3RydWN0b3IsIEZ1bmN0aW9uUmFyZURhdGEqIGZ1bmN0aW9uUmFy
ZURhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgorQUxXQVlTX0lOTElORSB2b2lkIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG93bmVyLCBKU09iamVj
dCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9u
KiBjb25zdHJ1Y3RvciwgRnVuY3Rpb25SYXJlRGF0YSogZnVuY3Rpb25SYXJlRGF0YSkKIHsKICAg
ICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKICAgICBBU1NFUlQoIW1fc3RydWN0dXJlKTsKLSAgICBB
U1NFUlQoIW1fcHJvdG90eXBlKTsKLSAgICBBU1NFUlQoIW1faW5saW5lQ2FwYWNpdHkpOwogCiAg
ICAgLy8gRklYTUU6IFRlYWNoIGNyZWF0ZV90aGlzJ3MgZmFzdCBwYXRoIGhvdyB0byBhbGxvY2F0
ZSBwb2x5CiAgICAgLy8gcHJvdG8gb2JqZWN0czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NzUxNwpAQCAtNTYsOCArNTUsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9i
YWxPYgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0dXJlLT50eXBlSW5mbygpLnR5
cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwogICAgICAgICAgICAgbV9hbGxvY2F0b3IgPSBBbGxv
Y2F0b3IoKTsKICAgICAgICAgICAgIG1fc3RydWN0dXJlLnNldCh2bSwgb3duZXIsIHN0cnVjdHVy
ZSk7Ci0gICAgICAgICAgICBtX3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBwcm90b3R5cGUpOwot
ICAgICAgICAgICAgbV9pbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVyZS0+aW5saW5lQ2FwYWNpdHko
KTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKS0+c2V0UHJvdG90eXBl
KHZtLCBvd25lciwgcHJvdG90eXBlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
CkBAIC0xMzgsMTEgKzEzNiwxMSBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYgogICAgIFdURjo6
c3RvcmVTdG9yZUZlbmNlKCk7CiAKICAgICBtX3N0cnVjdHVyZS5zZXQodm0sIG93bmVyLCBzdHJ1
Y3R1cmUpOwotICAgIG1fcHJvdG90eXBlLnNldCh2bSwgb3duZXIsIHByb3RvdHlwZSk7Ci0gICAg
bV9pbmxpbmVDYXBhY2l0eSA9IGlubGluZUNhcGFjaXR5OworICAgIHN0YXRpY19jYXN0PERlcml2
ZWQqPih0aGlzKS0+c2V0UHJvdG90eXBlKHZtLCBvd25lciwgcHJvdG90eXBlKTsKIH0KIAotQUxX
QVlTX0lOTElORSB1bnNpZ25lZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6cG9zc2libGVEZWZh
dWx0UHJvcGVydHlDb3VudChWTSYgdm0sIEpTT2JqZWN0KiBwcm90b3R5cGUpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBEZXJpdmVkPgorQUxXQVlTX0lOTElORSB1bnNpZ25lZCBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZUJhc2U8RGVyaXZlZD46OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoVk0mIHZt
LCBKU09iamVjdCogcHJvdG90eXBlKQogewogICAgIGlmIChwcm90b3R5cGUgPT0gcHJvdG90eXBl
LT5nbG9iYWxPYmplY3Qodm0pLT5vYmplY3RQcm90b3R5cGUoKSkKICAgICAgICAgcmV0dXJuIDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKaW5kZXgg
ZmEwZDNiMDdhM2M0NDZiZDFhMDAzMGU1MTI0MTg0ZTNiNDRmYWU5NS4uNDg4M2I0YjNkMjFiYmZj
OGVkNjZjZmI5NDc1OTBkNzA5NWFiNjFlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAtNDQsMTQgKzQ0LDYgQEAgc3RydWN0IFZhbHVlUHJv
ZmlsZUJhc2UgewogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0b3RhbE51bWJlck9mQnVja2V0
cyA9IG51bWJlck9mQnVja2V0cyArIG51bWJlck9mU3BlY0ZhaWxCdWNrZXRzOwogICAgIAogICAg
IFZhbHVlUHJvZmlsZUJhc2UoKQotICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCi0gICAg
ewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7
ICsraSkKLSAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOwotICAgIH0KLSAgICAKLSAgICBWYWx1ZVByb2ZpbGVCYXNlKGludCBieXRlY29kZU9mZnNl
dCkKLSAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kp
CiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsK
QEAgLTg2LDggKzc4LDEwIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB1
bnNpZ25lZCB0b3RhbE51bWJlck9mU2FtcGxlcygpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbjsKKyAg
ICAgICAgcmV0dXJuIG51bWJlck9mU2FtcGxlcygpICsgaXNTYW1wbGVkQmVmb3JlKCk7CiAgICAg
fQorCisgICAgYm9vbCBpc1NhbXBsZWRCZWZvcmUoKSBjb25zdCB7IHJldHVybiBtX3ByZWRpY3Rp
b24gIT0gU3BlY05vbmU7IH0KICAgICAKICAgICBib29sIGlzTGl2ZSgpIGNvbnN0CiAgICAgewpA
QCAtMTA5LDcgKzEwMyw3IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB2
b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICB7Ci0gICAgICAgIG91dC5wcmludCgic2Ft
cGxlcyA9ICIsIHRvdGFsTnVtYmVyT2ZTYW1wbGVzKCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1
bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKKyAgICAgICAgb3V0LnByaW50KCJzYW1wbGVkIGJl
Zm9yZSA9ICIsIGlzU2FtcGxlZEJlZm9yZSgpLCAiIGxpdmUgc2FtcGxlcyA9ICIsIG51bWJlck9m
U2FtcGxlcygpLCAiIHByZWRpY3Rpb24gPSAiLCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9u
KSk7CiAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVlOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkgewogICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbaV0pOwpAQCAtMTMzLDcgKzEyNyw2
IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgICAgIGlmICghdmFsdWUpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fbnVt
YmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uKys7CiAgICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9u
KG1fcHJlZGljdGlvbiwgc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7
CkBAIC0xNDIsMTcgKzEzNSwxMyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAg
IHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAgfQogICAgIAotICAgIGludCBtX2J5dGVjb2RlT2Zm
c2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICB1bnNpZ25lZCBtX251bWJlck9mU2FtcGxlc0lu
UHJlZGljdGlvbiB7IDAgfTsKLSAgICAKLSAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24g
eyBTcGVjTm9uZSB9OwotICAgIAogICAgIEVuY29kZWRKU1ZhbHVlIG1fYnVja2V0c1t0b3RhbE51
bWJlck9mQnVja2V0c107CisKKyAgICBTcGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVj
Tm9uZSB9OwogfTsKIAogc3RydWN0IE1pbmltYWxWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQ
cm9maWxlQmFzZTwwPiB7CiAgICAgTWluaW1hbFZhbHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVC
YXNlPDA+KCkgeyB9Ci0gICAgTWluaW1hbFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQp
OiBWYWx1ZVByb2ZpbGVCYXNlPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRl
PHVuc2lnbmVkIGxvZ051bWJlck9mQnVja2V0c0FyZ3VtZW50PgpAQCAtMTYzLDIzICsxNTIsMTIg
QEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMgOiBwdWJsaWMgVmFs
dWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWIKICAgICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEg
PDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+KCkKICAgICB7CiAgICAgfQotICAgIFZhbHVl
UHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMoaW50IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAg
ICA6IFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oYnl0
ZWNvZGVPZmZzZXQpCi0gICAgewotICAgIH0KIH07CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBw
dWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPiB7CiAgICAgVmFsdWVQ
cm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0g
ICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9mZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zmc2V0KSB7IH0KIH07CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+Ci1pbmxpbmUgaW50IGdldFZhbHVlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFQqIHZh
bHVlUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gdmFsdWVQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0
OwotfQotCiAvLyBUaGlzIGlzIGEgbWluaSB2YWx1ZSBwcm9maWxlIHRvIGNhdGNoIHBhdGhvbG9n
aWVzLiBJdCBpcyBhIGNvdW50ZXIgdGhhdCBnZXRzCiAvLyBpbmNyZW1lbnRlZCB3aGVuIHdlIHRh
a2UgdGhlIHNsb3cgcGF0aCBvbiBhbnkgaW5zdHJ1Y3Rpb24uCiBzdHJ1Y3QgUmFyZUNhc2VQcm9m
aWxlIHsKQEAgLTE5OCw4ICsxNzYsNyBAQCBpbmxpbmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5
dGVjb2RlT2Zmc2V0KFJhcmVDYXNlUHJvZmlsZSogcmFyZUNhc2VQcm9maWxlKQogICAgIHJldHVy
biByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVPZmZzZXQ7CiB9CiAKLXN0cnVjdCBWYWx1ZVBy
b2ZpbGVBbmRPcGVyYW5kIHsKLSAgICBWYWx1ZVByb2ZpbGUgbV9wcm9maWxlOworc3RydWN0IFZh
bHVlUHJvZmlsZUFuZE9wZXJhbmQgOiBwdWJsaWMgVmFsdWVQcm9maWxlIHsKICAgICBpbnQgbV9v
cGVyYW5kOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCA4NDFkYTE4ZjhiNGJmYTVlZDgxMTg1NDhkOGRiZjI2MWRlMGMxN2Jj
Li5hODNiYjFmYjg5YzE5YjkyZjc2ZDZkNmIxMGY3NGIzMWM5OTkyY2Y2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDc4OCw3ICs0
Nzg4LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQp
CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0
VGhpcygpOwogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJyZW50SW5zdHJ1Y3Rpb24t
PmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKGNvZGVCbG9jayk7Ci0gICAgICAgICAgICBTdHJ1Y3R1
cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlLmdldCgpOwor
ICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEOworICAgICAgICAgICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUg
PSBudWxscHRyOworICAgICAgICAgICAgaWYgKGNhY2hlZFN0cnVjdHVyZUlEKQorICAgICAgICAg
ICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0tPmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdl
dChjYWNoZWRTdHJ1Y3R1cmVJRCk7CiAgICAgICAgICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNT
dGF0dXMgIT0gVG9UaGlzT0sKICAgICAgICAgICAgICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCiAg
ICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFi
bGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCktPm1ldGhvZFRhYmxlLnRvVGhpcwpAQCAtNjAw
NCw3ICs2MDA3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBs
aW1pdCkKIAogICAgICAgICAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmls
ZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lz
dGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQpOwotICAgICAgICAgICAgICAgICAgICBTcGVj
dWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAg
ICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5pc0xvY2FsKCkpCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVuZChwcmVkaWN0aW9uKTsKICAgICAgICAgICAg
ICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCBlZTUzZDYxZDdmNzU0Njc4MWE5MDQ2NzYwZjJhNWE5ZWYzOGI2ZWQ1Li4yNWM0
YzA5MGQ2MDAxZTZiYzExZjQwYjY0NmI5ZGY2NzZiNmMwNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTM1NSw3ICszNTUsNyBAQCBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRlVGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RvcgogICAgIGlmIChjb25zdHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rp
b25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0
aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIGF1dG8gcmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlv
bio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVj
LCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHNjb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlv
bigpOwotICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUg
PSByYXJlRGF0YS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsKKyAgICAgICAgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKiBhbGxvY2F0aW9uUHJvZmlsZSA9IHJhcmVEYXRh
LT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgSlNPYmplY3QqIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGRlYmQwM2ViMWVjNjg1ZDA3YzBhNzVi
MWU4ZDNmYTRhOWU1YzY3NTIuLmQwNDEwYjM1ZDM5MDE3ZjgwZGI1OTA1ZWQ0OTJkM2UzMzg2OGJj
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCkBAIC0xMjU2NSwxNCArMTI1NjUsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUNyZWF0ZVRoaXMoTm9kZSogbm9kZSkKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNo
SWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVy
OjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFy
ZURhdGFHUFIpOwogICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikpOwotICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBp
bGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVj
dEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7CisgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBl
OjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdp
dGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAg
YXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0
ZUpTT2JqZWN0KHJlc3VsdEdQUiwgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JH
UFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBzY3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKLSAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwotICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0
T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9m
ZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIGlubGluZUNhcGFjaXR5R1BSKTsKKyAgICBtX2ppdC5s
b2FkOChKSVRDb21waWxlcjo6QWRkcmVzcyhzdHJ1Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5saW5l
Q2FwYWNpdHlPZmZzZXQoKSksIGlubGluZUNhcGFjaXR5R1BSKTsKICAgICBtX2ppdC5lbWl0SW5p
dGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0R1BSLCBpbmxpbmVDYXBhY2l0eUdQUik7CiAgICAg
bV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAppbmRleCA4OTk5NWU2
NzQ4ZDNmMjQyYTVlMDIwNWNhMGNhZTE2NDU4Mzk3ZTMwLi43MGM5OTNhNzE4YTc3MWYxNjFkY2Yy
YmUzNDIxMmYwOTE4ZWI5ZjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaApAQCAtNTcsOCArNTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNh
cGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNldE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1h
Y3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zm
c2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2Rp
ZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmll
ZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxs
b2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAotICAg
IG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2Nh
dG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9y
KCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8o
R2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAg
ICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwgR2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRl
cigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZlclZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVy
Vmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggMThjZWJhNmFkOTBiODA4YzRlMDRmZmQxOGYxY2I5MjY1MjJmNDI2Mi4u
ZjA1ZGJhOTY0YjJlNjc3YTg5M2IxZGQxZWZiYWRjMjRjM2U4M2E0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC03MDcsNyArNzA3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CiAgICAgICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAg
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGUmPihwcm9m
aWxlKSk7CiAgICAgICAgIH0pOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKQEAg
LTg3OCwxNSArODc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVy
ZT4qIGNhY2hlZFN0cnVjdHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBT
dHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1
cmVJRDsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0Lm9mZnNl
dCgpLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwog
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBGaW5hbE9iamVjdFR5cGUp
KTsKLSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNo
ZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwog
fQogCkBAIC05MDgsOCArOTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVS
ZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSksIGFsbG9jYXRvclJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVn
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJl
Zyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJv
dG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKIAogICAgIGxvYWRQ
dHIoY2FjaGVkRnVuY3Rpb24sIGNhY2hlZEZ1bmN0aW9uUmVnKTsKICAgICBKdW1wIGhhc1NlZW5N
dWx0aXBsZUNhbGxlZXMgPSBicmFuY2hQdHIoRXF1YWwsIGNhY2hlZEZ1bmN0aW9uUmVnLCBUcnVz
dGVkSW1tUHRyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKSk7CkBAIC05MTks
OSArOTE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgYXV0
byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JSZWcs
IHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3Moc2NyYXRjaFJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgc2NyYXRj
aFJlZyk7Ci0gICAgbG9hZDMyKEFkZHJlc3Moc2NyYXRjaFJlZywgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIHNjcmF0Y2hSZWcpOworICAgIGxvYWQ4KEFk
ZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBz
Y3JhdGNoUmVnKTsKICAgICBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBz
Y3JhdGNoUmVnKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDI1YTljOGYzNTBhZGMzZTY5NDQw
ZGFjYTM0ZDgyNDIyZWU0ZjE4MmMuLjk3YWUyZmJlNWIyZjM3NTk1NDQ0OGRlODVhODExMThkZWQ4
OWQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
UmVncyByZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlKTsKICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpAQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhj
YWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsK
ICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAg
bG9hZDMyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURh
dGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0
dXJlUmVnKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0
aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CiAKICAgICBs
b2FkUHRyKGNhY2hlZEZ1bmN0aW9uLCBjYWNoZWRGdW5jdGlvblJlZyk7CiAgICAgSnVtcCBoYXNT
ZWVuTXVsdGlwbGVDYWxsZWVzID0gYnJhbmNoUHRyKEVxdWFsLCBjYWNoZWRGdW5jdGlvblJlZywg
VHJ1c3RlZEltbVB0cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSkpOwpAQCAt
MTAzMSw5ICsxMDMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0
b3JSZWcsIHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwot
ICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRk
cmVzcyhzY3JhdGNoUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNo
UmVnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRk
cmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNj
cmF0Y2hSZWcpOwogICAgIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNj
cmF0Y2hSZWcpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFN0b3JlQ2Vs
bChieXRlY29kZS5tX2RzdC5vZmZzZXQoKSwgcmVzdWx0UmVnKTsKQEAgLTEwNDMsNyArMTA0MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVj
dHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJRCogY2Fj
aGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKICAgICBpbnQg
dGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCk7CiAKICAgICBlbWl0TG9h
ZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CkBAIC0xMDUxLDcgKzEwNDksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNoZWRT
dHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDAsIHJlZ1QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDVhMDAzYWFmMzAwMzFmZDM2MWRmNDBiN2RlN2EyNmIyNTZmOGVjZDgu
LjEyYjc4YWFkZjQ1ODlkZDQ4M2NjODc5MmQyZDYzODYzNTE5OTBlZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAg
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVBy
b2ZpbGUoRXhlY1N0YXRlKiBleGVjLAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBtZXRhZGF0YS5t
X2J1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
LSAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAg
IHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIo
cHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggNTE5YWQ3YWVjMzY0YWJhOTI2NjAxNGMyZDNlYjQ2MmQyNTliMzcxMy4uOWQ2MjE0
ODFmNzc0NzRlZmI4MzFiZDRlNWYxZjU4MjI5ZTMzMjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU4Myw3ICs1ODMsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVn
KTsKICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1v
ZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZSks
IFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVh
bCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsK
ICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgJm1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpOwogICAg
ICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyZTkwYzcwMWRhMWVj
NzViMTgyMmFhNmQ3YjNiZTdjNzQyNmYyNWI3Li5iYTdjMTA3OTM0ODViYzQ3MGY1MTM2Y2YzNDFm
NzFjNzY5MzgzZmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTc0MCwxOSArNzQwLDE5IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJ
ZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBJbnN0cnVjdGlv
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAKICAg
ICBpZiAoc2xvdC5pc1Vuc2V0KCkpIHsKLSAgICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJ
ZE1vZGU6OlVuc2V0OworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0
QnlJZE1vZGU6OlVuc2V0OwogICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1v
ZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKIAotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQ7CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9M
b2FkTW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldCA9IG9mZnNldDsKLSAgICBtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPSBzbG90LnNsb3RC
YXNlKCk7CiAgICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgcG9pbnRlciB3aWxsIHJlbWFpbiB2YWxp
ZCBiZWNhdXNlIGl0IHdpbGwgYmUgY2xlYXJlZCBieSBlaXRoZXIgYSB3YXRjaHBvaW50IGZpcmUg
b3IKICAgICAvLyBkdXJpbmcgR0Mgd2hlbiB3ZSBjbGVhciB0aGUgTExJbnQgY2FjaGVzLgogICAg
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdCA9IHNsb3Qu
c2xvdEJhc2UoKTsKKyAgICBBU1NFUlQobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBH
ZXRCeUlkTW9kZTo6UHJvdG9Mb2FkKTsKKyAgICBBU1NFUlQoIW1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKTsKIH0KIAogCkBAIC03NzUsOCArNzc1LDcgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgJiYgc2xv
dC5pc0NhY2hlYWJsZSgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9s
ZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgYXV0byBtb2RlID0gbWV0YWRhdGEubV9tb2RlOwot
ICAgICAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OkRl
ZmF1bHQ6CiAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTgwNCwxMiArODAzLDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfaWQpCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVy
ZSh2bSk7CiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0g
YmFzZVZhbHVlKSB7CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRo
ZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6
RGVmYXVsdDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRC
eUlkTW9kZTo6RGVmYXVsdDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRl
ZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CiAKICAgICAgICAgICAgIC8vIFBy
ZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAgICAgICAg
ICAgbWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hl
YWJsZSgpCiAgICAgICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5
V2F0Y2hwb2ludCgpKSB7CkBAIC04MjAsMjEgKzgxOSwyMiBAQCBMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgICAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNl
dCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBp
ZiAoVU5MSUtFTFkobWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiAoc2xvdC5p
c1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFVOTElL
RUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChz
bG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
c2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAgICAgICAgICAgIGlmICghKC0tbWV0
YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCisgICAgICAgICAgICBpZiAoISgtLW1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKICAgICAgICAg
ICAgICAgICBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShleGVjLCB2bSwgcGMsIG1ldGFkYXRh
LCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJ
TlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAgICAgICAgICYmIGlzSlNBcnJheShiYXNlVmFsdWUpCiAg
ICAgICAgICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewotICAgICAgICBt
ZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Ci0gICAgICAgIG5ldyAo
Jm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpIEFy
cmF5UHJvZmlsZShjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKSk7CisgICAgICAgIENvbmN1
cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOworICAgICAg
ICBuZXcgKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlKSBBcnJheVByb2ZpbGU7CiAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSh2bSkpOwogCiAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBj
YWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAgICAgICBtZXRhZGF0YS5tX2hpdENvdW50Rm9y
TExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOwogICAgIH0KIAogICAgIExMSU5UX1BST0ZJTEVfVkFMVUUo
cmVzdWx0KTsKQEAgLTE1MDIsMTIgKzE1MDIsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBl
IHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbgog
ICAgICAgICAgICAgICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CiAKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNhbGxl
ckNvZGVCbG9jay0+bV9sb2NrKTsKLQotICAgICAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmlzT25MaXN0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7
Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KHZtLCBjYWxsZXJDb2Rl
QmxvY2ssIGludGVybmFsRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
bGFzdFNlZW5DYWxsZWUuc2V0KHZtLCBjYWxsZXJDb2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24p
OwotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2Rl
UHRyOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGluayh2bSwgY2FsbGVyQ29kZUJs
b2NrLCBpbnRlcm5hbEZ1bmN0aW9uLCBjb2RlUHRyKTsKICAgICAgICAgICAgIH0KIAogICAgICAg
ICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgSlNF
bnRyeVB0clRhZyk7CkBAIC0xNTUwLDEyICsxNTQ1LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJu
VHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW4KICAgICAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKIAogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNhbGxlckNvZGVCbG9jay0+
bV9sb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkp
Ci0gICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOwotICAgICAgICBjYWxsTGlua0lu
Zm8tPmNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgY2FsbGVlKTsKLSAgICAgICAgY2Fs
bExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgY2FsbGVl
KTsKLSAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7Cisg
ICAgICAgIGNhbGxMaW5rSW5mby0+bGluayh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUsIGNv
ZGVQdHIpOwogICAgICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICAgICAgY29kZUJsb2NrLT5s
aW5rSW5jb21pbmdDYWxsKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgfQpAQCAtMTkyOCw3ICsx
OTE4LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCiAg
ICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8mIG1ldGFkYXRh
ID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Ci0gICAgICAgIHByb2Zp
bGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNr
ZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fYnVj
a2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVy
YW5kKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogCiAgICAgTExJTlRfRU5EKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCmluZGV4IGM3N2ZiN2UzNmJjZGU1M2VhMzRhZGU3ZTQ4MzkwNmFlYzViZjM2MzIuLmM5NjYx
Yzg3MzM1MGY2ZDdmNmIwMTNmZDA3NTQxZTZjZWE5OTEwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBA
IC03NDUsNyArNzQ1LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhp
cywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLAogICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBG
aW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAg
bG9hZHAgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIHQyCisgICAg
bG9hZGkgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZUlEW3QyXSwgdDIKICAg
ICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xvdwogICAg
IGRpc3BhdGNoKCkKIApAQCAtMTgzNiw3ICsxODM2LDcgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9w
Y29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkK
ICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAogICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAg
ICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLmNhbGxl
ZVt0NV0sIHQyCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgogICAg
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMs
IC5vcENhbGxTbG93KQogICAgICAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CiAgICAgICAg
IGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQpAQCAtMTg0OSw4ICsxODQ5LDgg
QEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3Qs
IHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50
ICsgUGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRh
Z09mZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlv
bihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAg
ICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAg
ICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKICAgICAgICAgc2xvd1Bh
dGhGb3JDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJl
Q2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXI2NC5hc20KaW5kZXggYzgwNzQzNTg0NTA5Y2ZlZTMwOTkzYTZlYjExMjU1ZDIxMzM1
MWM2Mi4uNzg4ZjFhZDNiNmM2YWE1MDY0ZWEzZDBkMTE2MWQ4YjlmZTE2NzYyZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KQEAgLTcwMSwxMCArNzAxLDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywg
T3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwKICAgICBsb2Fk
cSBbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cK
ICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlz
U2xvdwotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKKyAgICBs
b2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICBsb2FkcCBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIK
LSAgICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkaSBPcFRvVGhpczo6TWV0
YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgorICAgIGJpbmVxIHQxLCB0MiwgLm9w
VG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKCkKIAogLm9wVG9UaGlzU2xvdzoKQEAgLTEyODgsNyAr
MTI4OCw3IEBAIGVuZCkKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0
QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAg
bWV0YWRhdGEodDIsIHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZVt0
Ml0sIHQxCisgICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9k
ZVt0Ml0sIHQxCiAgICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZUNlbGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKIApAQCAtMTkzMSw3ICsxOTMxLDcg
QEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3Qs
IHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAogICAgICAg
ICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRh
dGE6Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCisgICAgICAgIGxvYWRwICVvcGNvZGVT
dHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVl
V2l0aExpbmtCaXRbdDVdLCB0MgogICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUs
IHQwLCB0MykKICAgICAgICAgYnFuZXEgdDMsIHQyLCAub3BDYWxsU2xvdwogICAgICAgICBnZXR1
KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCB0MykKQEAgLTE5NDMsOCArMTk0Myw4IEBAIG1h
Y3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVw
YXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdCiAgICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRP
ZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVd
LCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24o
c2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAg
ICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
bV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAg
ICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRb
dDVdLCBKU0VudHJ5UHRyVGFnKQogCiAgICAgLm9wQ2FsbFNsb3c6CiAgICAgICAgIHNsb3dQYXRo
Rm9yQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNh
bGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAppbmRleCA4NTQ0MTg4ODM2ZmU2ODljZDhhNjdkMmJmZjQzNzI1MjE3M2NmNWJlLi40ZTc4
YTQ4ZDZkMTllYjliMDZkM2M5ZWQwNzRlOTU4MTEyZDA4YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTI0Miw3ICsyNDIs
NyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpCiAgICAgICAgICAgICBj
YWNoZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNh
bGxlZU9iamVjdHMoKSk7CiAKICAgICAgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gYnl0ZWNv
ZGUubV9pbmxpbmVDYXBhY2l0eTsKLSAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIGFs
bG9jYXRpb25Qcm9maWxlID0gY29uc3RydWN0b3ItPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlv
blByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgp
OworICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUqIGFsbG9jYXRp
b25Qcm9maWxlID0gY29uc3RydWN0b3ItPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2Zp
bGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwogICAg
ICAgICB0aHJvd1Njb3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKTsKICAgICAg
ICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKQEAgLTI3
MiwxNiArMjcyLDE3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQogICAgIGF1
dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgSlNWYWx1ZSB2MSA9
IEdFVChieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1ZSgpOwogICAgIGlmICh2MS5pc0NlbGwoKSkg
ewotICAgICAgICBTdHJ1Y3R1cmUqIG15U3RydWN0dXJlID0gdjEuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSk7Ci0gICAgICAgIFN0cnVjdHVyZSogb3RoZXJTdHJ1Y3R1cmUgPSBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAgaWYgKG15U3RydWN0dXJlICE9IG90aGVyU3Ry
dWN0dXJlKSB7Ci0gICAgICAgICAgICBpZiAob3RoZXJTdHJ1Y3R1cmUpCisgICAgICAgIFN0cnVj
dHVyZUlEIG15U3RydWN0dXJlSUQgPSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKTsKKyAgICAg
ICAgU3RydWN0dXJlSUQgb3RoZXJTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQ7CisgICAgICAgIGlmIChteVN0cnVjdHVyZUlEICE9IG90aGVyU3RydWN0dXJlSUQpIHsK
KyAgICAgICAgICAgIGlmIChvdGhlclN0cnVjdHVyZUlEKQogICAgICAgICAgICAgICAgIG1ldGFk
YXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgICAgIG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlLnNldCh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG15U3RydWN0
dXJlKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSBteVN0cnVj
dHVyZUlEOworICAgICAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIoZXhlYy0+Y29kZUJsb2Nr
KCksIHZtLmdldFN0cnVjdHVyZShteVN0cnVjdHVyZUlEKSk7CiAgICAgICAgIH0KICAgICB9IGVs
c2UgewogICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7
Ci0gICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIG1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwogICAgIH0KICAgICAvLyBOb3RlOiBXZSBv
bmx5IG5lZWQgdG8gZG8gdGhpcyB2YWx1ZSBwcm9maWxpbmcgaGVyZSBvbiB0aGUgc2xvdyBwYXRo
LiBUaGUgZmFzdCBwYXRoCiAgICAgLy8ganVzdCByZXR1cm5zIHRoZSBpbnB1dCB0byB0b190aGlz
IGlmIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgc3VjY2VlZHMuIElmIHRoZSBzdHJ1Y3R1cmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCBh
NmE2ZGYwMGQ0NTQ3ODk4MDE5MDRmZjVlZWNlYTIyYmRkYzc5MjFjLi4yZWRhMzJiYTM4NTM2MTBk
MDFhOTQ1YTZhNDlmNWZhNDA0YzNiMzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEZ1bmN0
aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIE9CSkVD
VF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlKTsK
ICAgICB9CiAKLSAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKQorICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSogb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUoKQogICAgIHsKICAgICAgICAgcmV0dXJuICZtX29iamVjdEFsbG9j
YXRpb25Qcm9maWxlOwogICAgIH0KQEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBGdW5jdGlvblJh
cmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgLy8KICAgICAvLyBXZSBkb24ndCBy
ZWFsbHkgY2FyZSBhYm91dCAxKSBzaW5jZSB0aGlzIG1lbW9yeSBpcyByYXJlIGFuZCBzbWFsbCBp
biB0b3RhbC4gMikgaXMgdW5mb3J0dW5hdGUgYnV0IGlzCiAgICAgLy8gcHJvYmFibHkgb3V0d2Vp
Z2hlZCBieSB0aGUgY29zdCBvZiAzKS4KLSAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBtX29i
amVjdEFsbG9jYXRpb25Qcm9maWxlOworICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFBy
b3RvdHlwZSBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogICAgIElubGluZVdhdGNocG9pbnRT
ZXQgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgSW50ZXJuYWxGdW5j
dGlvbkFsbG9jYXRpb25Qcm9maWxlIG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
OwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggZDc3
M2Q4NTVmZmMyZTAxNTQ4ZWNmNmRhYThjZDhkNTU1OTFjOGM5Ni4uMDVlNDA5OWIxNjRjNmE4YTFk
NzEzNzRjZmRjNDViNjJkODM4NjBlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0hlYXBWZXJpZmllci5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCBib29sIEhlYXBWZXJpZmllcjo6
dmFsaWRhdGVKU0NlbGwoVk0qIGV4cGVjdGVkVk0sIEpTQ2VsbCogY2VsbCwgQ2VsbFByb2ZpbGUq
IHBybwogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8Q29kZUJs
b2NrKj4odm0sIGNlbGwpOwogICAgICAgICBpZiAoVU5MSUtFTFkoY29kZUJsb2NrKSkgewogICAg
ICAgICAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9y
RWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUpIHsKKyAgICAg
ICAgICAgIGNvZGVCbG9jay0+Zm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiB2
YWx1ZVByb2ZpbGUsIGJvb2wpIHsKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgVmFsdWVQcm9maWxlOjp0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWVQcm9maWxl
Lm1fYnVja2V0c1tpXSk7CiAgICAgICAgICAgICAgICAgICAgIGlmICghdmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370112</attachid>
            <date>2019-05-17 02:46:09 -0700</date>
            <delta_ts>2019-05-17 12:36:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517024608.patch</filename>
            <type>text/plain</type>
            <size>76798</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5lZDkwM2RmMzYyNzg2Y2Mx
NzgwYzJiM2NjYWFjNDZlYzhjYmVmZjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDcgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLiBUaGlzIGFsc28gaW1wbGllcyB0aGF0IFJBTWlmaWNh
dGlvbiB3b3VsZCBnZXQgYmVuZWZpdC4KKworICAgICAgICBUaGlzIHBhdGNoIGF0dGVtcHRzIHRv
IHNocmluayBNZXRhZGF0YS4gVGhpcyBwYXRjaCBmaXJzdCBmb2N1cyBvbiBsb3cgaGFuZ2luZyBm
cnVpdHM6IGl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIGNoYW5nZSByZW1vdmluZyBPU1IgZXhpdCBK
U1ZhbHVlIGluIFZhbHVlUHJvZmlsZS4KKworICAgICAgICAxLiBWYWx1ZVByb2ZpbGUgaXMgcmVk
dWNlZCBmcm9tIDMyIHRvIDI0LiBJdCByZWR1Y2VzIE1ldGFkYXRhIHVzaW5nIFZhbHVlUHJvZmls
ZS4KKyAgICAgICAgMi4gQXJyYXlQcm9maWxlIGlzIHJlZHVjZWQgZnJvbSAxNiB0byAxMi4gRGl0
dG8uCisgICAgICAgIDMuIE9wQ2FsbDo6TWV0YWRhdGEgaXMgcmVkdWNlZCBmcm9tIDg4IHRvIDY0
LgorICAgICAgICA0LiBPcEdldEJ5SWQ6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA1NiB0byA0
MC4KKyAgICAgICAgNS4gT3BUb1RoaXM6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA0OCB0byAz
Mi4KKyAgICAgICAgNi4gT3BOZXdPYmplY3Q6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSAzMiB0
byAxNi4KKworICAgICAgICAqIGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHA6CisgICAgICAgICog
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6QXJy
YXlQcm9maWxlKToKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpieXRlY29kZU9mZnNldCBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkFycmF5UHJvZmlsZTo6aXNWYWxpZCBjb25z
dCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBpcyBubyBsb25nZXIgdXNlZC4K
KworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYjoKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpnZXRBcnJheVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVwZGF0ZUFsbFBy
ZWRpY3Rpb25zQW5kQ291bnRMaXZlbmVzcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVt
cFZhbHVlUHJvZmlsZXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9y
RWFjaFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zm9yRWFjaEFycmF5
UHJvZmlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmg6IFdlIHVzZSBQ
cm90b0xvYWQncyBKU09iamVjdCdzIGhpZ2ggYml0cyB0byBlbWJlZCBoaXRDb3VudEZvckxMSW50
Q2FjaGluZyBhbmQgbW9kZSwgc2luY2UgdGhleQorICAgICAgICBhcmUgYWx3YXlzIHplcm8gZm9y
IFByb3RvTG9hZCBtb2RlLgorCisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6CisgICAgICAgIChKU0M6OkxMSW50Q2Fs
bExpbmtJbmZvOjppc0xpbmtlZCBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJ
bmZvOjpsaW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OnVubGluayk6Cisg
ICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWUgY29uc3QpOgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6bGFzdFNlZW5DYWxsZWUgY29uc3QpOgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6Y2xlYXJMYXN0U2VlbkNhbGxlZSk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6IERlbGV0ZWQuCisgICAgICAg
IEluIExMSW50Q2FsbExpbmtJbmZvLCB3ZSBhbHdheXMgc2V0IHRoZSBzYW1lIHZhbHVlIHRvIGxh
c3RTZWVuQ2FsbGVlIGFuZCBjYWxsZWUuIEJ1dCBsYXRlciwgY2FsbGVlIGNhbiBiZSBjbGVhcmVk
LgorICAgICAgICBJdCBtZWFucyB0aGF0IHdlIGNhbiByZXByZXNlbnQgdGhlbSBpbiBvbmUgdmFs
dWUgKyBjbGVhcmVkIGZsYWcuIFdlIGVuY29kZSB0aGlzIGZsYWcgaW50byB0aGUgbG93ZXN0IGJp
dCBvZiB0aGUgY2FsbGVlIGNlbGwgc28KKyAgICAgICAgdGhhdCB3ZSBjYW4gbWFrZSB0aGVtIG9u
ZSBwb2ludGVyLiBXZSBhbHNvIHVzZSBQYWNrZWRSYXdTZW50aW5lbE5vZGUgdG8gZ2V0IHNvbWUg
c3BhY2UsIGFuZCBlbWJlZCBBcnJheVByb2ZpbGUgaW50byB0aGlzIHNwYWNlCisgICAgICAgIHRv
IGdldCBmdXJ0aGVyIG1lbW9yeSByZWR1Y3Rpb24uCisKKyAgICAgICAgKiBieXRlY29kZS9MTElu
dFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwOgorICAgICAgICAo
SlNDOjpMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmNsZWFy
TExJbnRHZXRCeUlkQ2FjaGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQ
cm9maWxlLmg6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlOjpMYXp5T3Bl
cmFuZFZhbHVlUHJvZmlsZSk6CisgICAgICAgIChKU0M6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxl
OjprZXkgY29uc3QpOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGFkYXRhVGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6TWV0YWRhdGFUYWJsZTo6YnVmZmVyKToKKyAgICAgICAgKiBieXRlY29kZS9PYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZS5oOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZUJhc2U6Om9mZnNldE9mQWxsb2NhdG9yKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVCYXNlOjpvZmZzZXRPZlN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6Ok9iamVj
dEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6Y2xlYXIpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZUJhc2U6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnNldFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6cHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpjbGVhcik6CisgICAgICAgIChK
U0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6dmlzaXRBZ2dyZWdhdGUp
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6OnNl
dFByb3RvdHlwZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZz
ZXRPZkFsbG9jYXRvcik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZklubGluZUNhcGFjaXR5KTogRGVsZXRlZC4KKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Omlz
TnVsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpz
dHJ1Y3R1cmUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6cHJvdG90eXBlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGU6OmlubGluZUNhcGFjaXR5KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6OmNsZWFyKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6OnZpc2l0QWdncmVnYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6T2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPERlcml2ZWQ+Ojppbml0aWFsaXplUHJvZmlsZSk6Cisg
ICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6cG9zc2li
bGVEZWZhdWx0UHJvcGVydHlDb3VudCk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjppbml0aWFsaXplUHJvZmlsZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KTogRGVsZXRl
ZC4KKyAgICAgICAgT3BOZXdPYmplY3QncyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBkb2VzIG5v
dCBuZWVkIHRvIGhvbGQgcHJvdG90eXBlLiBTbyB3ZSBoYXZlIHR3byB2ZXJzaW9ucyBub3csIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlIGFuZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90
b3R5cGUKKyAgICAgICAgdG8gY3V0IG9uZSBwb2ludGVyLiBXZSBhbHNvIHJlbW92ZSBpbmxpbmUg
Y2FwYWNpdHkgc2luY2UgdGhpcyBjYW4gYmUgcmV0cmlldmVkIGZyb20gU3RydWN0dXJlLgorCisg
ICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9m
aWxlLmg6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OlZhbHVlUHJvZmlsZUJhc2Up
OgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjp0b3RhbE51bWJlck9mU2FtcGxlcyBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmlzU2FtcGxlZEJlZm9yZSBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmR1bXApOgorICAgICAgICAo
SlNDOjpWYWx1ZVByb2ZpbGVCYXNlOjpjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24pOgorICAgICAg
ICAoSlNDOjpNaW5pbWFsVmFsdWVQcm9maWxlOjpNaW5pbWFsVmFsdWVQcm9maWxlKToKKyAgICAg
ICAgKEpTQzo6VmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czo6VmFsdWVQcm9maWxl
V2l0aExvZ051bWJlck9mQnVja2V0cyk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZTo6VmFs
dWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6Z2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICBCeXRlY29kZSBvZmZzZXQgaXMgbm8gbG9uZ2VyIHVzZWQuIEFu
ZCBzYW1wbGUgY291bnQgaXMgbm90IHVzZWQgZWZmZWN0aXZlbHkuCisKKyAgICAgICAgKiBkZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVRoaXMpOgorICAgICAgICAqIGZ0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5Lmg6CisgICAgICAgICogaml0L0pJVENhbGwuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKToKKyAgICAgICAgKiBqaXQvSklUQ2FsbDMyXzY0LmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpjb21waWxlU2V0dXBGcmFtZSk6CisgICAgICAgICogaml0
L0pJVE9wY29kZXMuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfY2F0Y2gpOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdG9fdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgICogaml0L0pJVE9wY29kZXMzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1p
dF9vcF9jcmVhdGVfdGhpcyk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToK
KyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2dldF9ieV9pZCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpMTEludDo6
c2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
U0xPV19QQVRIX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtOgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc206CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwOgorICAgICAgICAoSlNDOjpTTE9XX1BBVEhfREVDTCk6CisgICAgICAgICogcnVu
dGltZS9GdW5jdGlvblJhcmVEYXRhLmg6CisgICAgICAgICogdG9vbHMvSGVhcFZlcmlmaWVyLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcFZlcmlmaWVyOjp2YWxpZGF0ZUpTQ2VsbCk6CisKIDIwMTkt
MDUtMTYgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAg
V2FzbSBzaG91bGQgY2FnZSB0aGUgbWVtb3J5IGJhc2UgcG9pbnRlcnMgaW4gc3RydWN0cwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAppbmRleCBj
MDBhZWYyMWI2ZWJiNjE5ZTkxYzc0NmFmNGZiMDljNTg0ZmQ2NmJiLi4zZTE1MGEwMTIzOTZiMTI4
MjQ1MjhhNWU5ZjJiOTgzN2U4YzdkZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi1jb25zdCBjaGFyKiBjb25zdCBBcnJheVBy
b2ZpbGU6OnNfdHlwZU5hbWUgPSAiQXJyYXlQcm9maWxlIjsKLSNlbmRpZgotCiAvLyBLZWVwIGlu
IHN5bmMgd2l0aCB0aGUgb3JkZXIgb2YgVHlwZWRBcnJheVR5cGUuCiBjb25zdCBBcnJheU1vZGVz
IHR5cGVkQXJyYXlNb2Rlc1tOdW1iZXJPZlR5cGVkQXJyYXlUeXBlc0V4Y2x1ZGluZ0RhdGFWaWV3
XSA9IHsKICAgICBJbnQ4QXJyYXlNb2RlLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0FycmF5UHJvZmlsZS5oCmluZGV4IGJmZTM4ZTNmNTU2NDJhNTQwZDk4NTJlZmVjNzkwYWRl
ODg5ZDBjMzkuLmZiMzQ4YjkyZGQyNjIzYzA2NTFlZmQyZTRhOGMwZThkZTIzN2IyMDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKQEAgLTI3LDcg
KzI3LDYgQEAKIAogI2luY2x1ZGUgIkNvbmN1cnJlbnRKU0xvY2suaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKLSNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewogCkBAIC0xOTQsMjEgKzE5MywxMyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGZy
aWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKIHB1YmxpYzoKLSAgICBBcnJheVByb2ZpbGUoKQotICAg
ICAgICA6IEFycmF5UHJvZmlsZShzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkp
Ci0gICAgewotICAgIH0KLSAgICAKLSAgICBleHBsaWNpdCBBcnJheVByb2ZpbGUodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCi0gICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCkKLSAgICAgICAgLCBtX21heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcyhmYWxzZSkKKyAgICBl
eHBsaWNpdCBBcnJheVByb2ZpbGUoKQorICAgICAgICA6IG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQogICAgICAgICAsIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzKHRy
dWUpCiAgICAgICAgICwgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nKGZhbHNlKQogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX2J5dGVjb2RlT2Zmc2V0OyB9Ci0gICAgCiAgICAgU3RydWN0dXJlSUQqIGFkZHJlc3NPZkxh
c3RTZWVuU3RydWN0dXJlSUQoKSB7IHJldHVybiAmbV9sYXN0U2VlblN0cnVjdHVyZUlEOyB9CiAg
ICAgQXJyYXlNb2RlcyogYWRkcmVzc09mQXJyYXlNb2RlcygpIHsgcmV0dXJuICZtX29ic2VydmVk
QXJyYXlNb2RlczsgfQogICAgIGJvb2wqIGFkZHJlc3NPZk1heVN0b3JlVG9Ib2xlKCkgeyByZXR1
cm4gJm1fbWF5U3RvcmVUb0hvbGU7IH0KQEAgLTIzOCwxNiArMjI5LDExIEBAIGNsYXNzIEFycmF5
UHJvZmlsZSB7CiAgICAgQ1N0cmluZyBicmllZkRlc2NyaXB0aW9uKGNvbnN0IENvbmN1cnJlbnRK
U0xvY2tlciYsIENvZGVCbG9jayopOwogICAgIENTdHJpbmcgYnJpZWZEZXNjcmlwdGlvbldpdGhv
dXRVcGRhdGluZyhjb25zdCBDb25jdXJyZW50SlNMb2NrZXImKTsKICAgICAKLSNpZiAhQVNTRVJU
X0RJU0FCTEVECi0gICAgaW5saW5lIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZU5hbWUgPT0gc190eXBlTmFtZTsgfQotI2VuZGlmCi0KIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAKICAgICBzdGF0aWMgU3RydWN0dXJlKiBw
b2x5bW9ycGhpY1N0cnVjdHVyZSgpIHsgcmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KDEpKTsgfQogICAgIAotICAgIHVuc2lnbmVkIG1fYnl0ZWNv
ZGVPZmZzZXQ7CiAgICAgU3RydWN0dXJlSUQgbV9sYXN0U2VlblN0cnVjdHVyZUlEIHsgMCB9Owog
ICAgIGJvb2wgbV9tYXlTdG9yZVRvSG9sZSB7IGZhbHNlIH07IC8vIFRoaXMgZmxhZyBtYXkgYmVj
b21lIG92ZXJsb2FkZWQgdG8gaW5kaWNhdGUgb3RoZXIgc3BlY2lhbCBjYXNlcyB0aGF0IHdlcmUg
ZW5jb3VudGVyZWQgZHVyaW5nIGFycmF5IGFjY2VzcywgYXMgaXQgZGVwZW5kcyBvbiBpbmRleGlu
ZyB0eXBlLiBTaW5jZSB3ZSBjdXJyZW50bHkgaGF2ZSBiYXNpY2FsbHkganVzdCBvbmUgaW5kZXhp
bmcgdHlwZSAodHdvIHZhcmlhbnRzIG9mIEFycmF5U3RvcmFnZSksIHRoaXMgZmxhZyBmb3Igbm93
IGp1c3QgbWVhbnMgZXhhY3RseSB3aGF0IGl0cyBuYW1lIGltcGxpZXMuCiAgICAgYm9vbCBtX291
dE9mQm91bmRzIHsgZmFsc2UgfTsKQEAgLTI1NSwxMyArMjQxLDcgQEAgY2xhc3MgQXJyYXlQcm9m
aWxlIHsKICAgICBib29sIG1fdXNlc09yaWdpbmFsQXJyYXlTdHJ1Y3R1cmVzIDogMTsKICAgICBi
b29sIG1fZGlkUGVyZm9ybUZpcnN0UnVuUHJ1bmluZyA6IDE7CiAgICAgQXJyYXlNb2RlcyBtX29i
c2VydmVkQXJyYXlNb2RlcyB7IDAgfTsKLQotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBzdGF0
aWMgY29uc3QgY2hhciogY29uc3Qgc190eXBlTmFtZTsKLSAgICBjb25zdCBjaGFyKiBtX3R5cGVO
YW1lIHsgc190eXBlTmFtZSB9OwotI2VuZGlmCiB9OwotCi10eXBlZGVmIFNlZ21lbnRlZFZlY3Rv
cjxBcnJheVByb2ZpbGUsIDQ+IEFycmF5UHJvZmlsZVZlY3RvcjsKK3N0YXRpY19hc3NlcnQoc2l6
ZW9mKEFycmF5UHJvZmlsZSkgPT0gMTIpOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QucmIgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCmluZGV4IDA2OTVhMjUw
N2I2MjM5NzY0OWE4Nzk4OTYxNjc1NWMwOTM5Mzc3YWIuLmNkZWU1NjljOGQwMjBiMGQ3OTNjZTg0
YWU4OGFjNWRiZTFiNTE5MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUxpc3QucmIKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlTGlzdC5yYgpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgIHNyY0RzdDogVmly
dHVhbFJlZ2lzdGVyLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsKLSAgICAgICAgY2FjaGVkU3Ry
dWN0dXJlOiBXcml0ZUJhcnJpZXJCYXNlW1N0cnVjdHVyZV0sCisgICAgICAgIGNhY2hlZFN0cnVj
dHVyZUlEOiBTdHJ1Y3R1cmVJRCwKICAgICAgICAgdG9UaGlzU3RhdHVzOiBUb1RoaXNTdGF0dXMs
CiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAgICB9CkBAIC00MTQsOCArNDE0LDYg
QEAKICAgICAgICAgcHJvcGVydHk6IHVuc2lnbmVkLAogICAgIH0sCiAgICAgbWV0YWRhdGE6IHsK
LSAgICAgICAgbW9kZTogR2V0QnlJZE1vZGUsCi0gICAgICAgIGhpdENvdW50Rm9yTExJbnRDYWNo
aW5nOiB1bnNpZ25lZCwKICAgICAgICAgbW9kZU1ldGFkYXRhOiBHZXRCeUlkTW9kZU1ldGFkYXRh
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQpAQCAtNzA2LDcgKzcwNCw2
IEBACiAgICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50
Q2FsbExpbmtJbmZvLAotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAg
ICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtNzE5LDcgKzcxNiw2IEBACiAg
ICAgfSwKICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExp
bmtJbmZvLAotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgcHJv
ZmlsZTogVmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtNzMyLDcgKzcyOCw2IEBACiAgICAgfSwK
ICAgICBtZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZv
LAotICAgICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgcHJvZmlsZTog
VmFsdWVQcm9maWxlLAogICAgIH0KIApAQCAtNzg3LDcgKzc4Miw2IEBACiAgICAgfSwKICAgICBt
ZXRhZGF0YTogewogICAgICAgICBjYWxsTGlua0luZm86IExMSW50Q2FsbExpbmtJbmZvLAotICAg
ICAgICBhcnJheVByb2ZpbGU6IEFycmF5UHJvZmlsZSwKICAgICAgICAgcHJvZmlsZTogVmFsdWVQ
cm9maWxlLAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKaW5kZXggOTNlMzNkYWMwOTBhZTcyNDRiYTkwNmU5YjNmNTMyOTZi
MGZjYzQyYy4uM2I3ZTE5M2IwN2ZiMjg4NWI5MWUyNTdkNjkzMzU3MDVhNjU2ZTBlZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCkBA
IC04Niw3ICs4Niw3IEBAIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYsIENvZGVCCiAgICAgfQogICAgIAogICAg
IAotICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVl
LmdldCgpKTsKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2Vl
bkNhbGxlZSgpKTsKIH0KIAogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVG
b3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4
IGJjOWVkMTI5ZGVmMzFhMzdkNGY3ODQ1MWMzYTE2N2E3MWI4ZGVlMDkuLjc5ZjA2ZGMzMjUzYTI1
MWMyMjlkNDI1MDFhNzIzMTQ3Zjc0M2JkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC00ODIsMTMgKzQ4Miw4IEBAIGJvb2wgQ29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJs
ZSwgVW5saW5rCiAgICAgLy8gQm9va2tlZXAgdGhlIHN0cm9uZ2x5IHJlZmVyZW5jZWQgbW9kdWxl
IGVudmlyb25tZW50cy4KICAgICBIYXNoU2V0PEpTTW9kdWxlRW52aXJvbm1lbnQqPiBzdHJvbmds
eVJlZmVyZW5jZWRNb2R1bGVFbnZpcm9ubWVudHM7CiAKLSAgICBhdXRvIGxpbmtfcHJvZmlsZSA9
IFsmXShjb25zdCBhdXRvJiBpbnN0cnVjdGlvbiwgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIG1l
dGFkYXRhKSB7CisgICAgYXV0byBsaW5rX3Byb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0
cnVjdGlvbiovLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgLyptZXRhZGF0YSovKSB7CiAgICAg
ICAgIG1fbnVtYmVyT2ZOb25Bcmd1bWVudFZhbHVlUHJvZmlsZXMrKzsKLSAgICAgICAgbWV0YWRh
dGEubV9wcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbi5vZmZzZXQoKTsKLSAg
ICB9OwotCi0gICAgYXV0byBsaW5rX2FycmF5UHJvZmlsZSA9IFsmXShjb25zdCBhdXRvJiBpbnN0
cnVjdGlvbiwgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgIG1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPSBpbnN0cnVjdGlvbi5vZmZz
ZXQoKTsKICAgICB9OwogCiAgICAgYXV0byBsaW5rX29iamVjdEFsbG9jYXRpb25Qcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byBieXRlY29kZSwgYXV0byYgbWV0
YWRhdGEpIHsKQEAgLTQ5OSwxMCArNDk0LDYgQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAg
ICAgICAgbWV0YWRhdGEubV9hcnJheUFsbG9jYXRpb25Qcm9maWxlLmluaXRpYWxpemVJbmRleGlu
Z01vZGUoYnl0ZWNvZGUubV9yZWNvbW1lbmRlZEluZGV4aW5nVHlwZSk7CiAgICAgfTsKIAotICAg
IGF1dG8gbGlua19oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IFsmXShjb25zdCBhdXRvJiAvKmlu
c3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiBtZXRhZGF0YSkgewotICAgICAg
ICBtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gT3B0aW9uczo6cHJvdG90eXBl
SGl0Q291bnRGb3JMTEludENhY2hpbmcoKTsKLSAgICB9OwotCiAjZGVmaW5lIExJTktfRklFTEQo
X19maWVsZCkgXAogICAgIFdURl9MQVpZX0pPSU4obGlua18sIF9fZmllbGQpKGluc3RydWN0aW9u
LCBieXRlY29kZSwgbWV0YWRhdGEpOwogCkBAIC01MjcsMTMgKzUxOCwxMyBAQCBib29sIENvZGVC
bG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1
dGFibGUsIFVubGluawogICAgICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IGluc3RydWN0aW9uLT5v
cGNvZGVJRCgpOwogICAgICAgICBtX2J5dGVjb2RlQ29zdCArPSBvcGNvZGVMZW5ndGhzW29wY29k
ZUlEXTsKICAgICAgICAgc3dpdGNoIChvcGNvZGVJRCkgewotICAgICAgICBMSU5LKE9wSGFzSW5k
ZXhlZFByb3BlcnR5LCBhcnJheVByb2ZpbGUpCisgICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJv
cGVydHkpCiAKLSAgICAgICAgTElOSyhPcENhbGxWYXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2Zp
bGUpCi0gICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIGFycmF5UHJvZmlsZSwgcHJvZmls
ZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cywgYXJyYXlQcm9maWxl
LCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgYXJyYXlQcm9maWxl
LCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIGFycmF5UHJvZmlsZSwgcHJvZmls
ZSkKKyAgICAgICAgTElOSyhPcENhbGxWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9w
VGFpbENhbGxWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJk
QXJndW1lbnRzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ29uc3RydWN0VmFyYXJncywgcHJv
ZmlsZSkKKyAgICAgICAgTElOSyhPcEdldEJ5VmFsLCBwcm9maWxlKQogCiAgICAgICAgIExJTkso
T3BHZXREaXJlY3RQbmFtZSwgcHJvZmlsZSkKICAgICAgICAgTElOSyhPcEdldEJ5SWRXaXRoVGhp
cywgcHJvZmlsZSkKQEAgLTU1MCwxNiArNTQxLDE2IEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5r
CiAgICAgICAgIExJTksoT3BCaXRub3QsIHByb2ZpbGUpCiAgICAgICAgIExJTksoT3BCaXR4b3Is
IHByb2ZpbGUpCiAKLSAgICAgICAgTElOSyhPcEdldEJ5SWQsIHByb2ZpbGUsIGhpdENvdW50Rm9y
TExJbnRDYWNoaW5nKQorICAgICAgICBMSU5LKE9wR2V0QnlJZCwgcHJvZmlsZSkKIAotICAgICAg
ICBMSU5LKE9wQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFp
bENhbGwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhPcENhbGxFdmFsLCBw
cm9maWxlLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUs
IGFycmF5UHJvZmlsZSkKKyAgICAgICAgTElOSyhPcENhbGwsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbCwgcHJvZmlsZSkKKyAgICAgICAgTElOSyhPcENhbGxFdmFsLCBwcm9maWxl
KQorICAgICAgICBMSU5LKE9wQ29uc3RydWN0LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BJ
bkJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbCwgYXJyYXlQcm9m
aWxlKQotICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QsIGFycmF5UHJvZmlsZSkKKyAgICAg
ICAgTElOSyhPcEluQnlWYWwpCisgICAgICAgIExJTksoT3BQdXRCeVZhbCkKKyAgICAgICAgTElO
SyhPcFB1dEJ5VmFsRGlyZWN0KQogCiAgICAgICAgIExJTksoT3BOZXdBcnJheSkKICAgICAgICAg
TElOSyhPcE5ld0FycmF5V2l0aFNpemUpCkBAIC0xMjA4LDcgKzExOTksNyBAQCB2b2lkIENvZGVC
bG9jazo6ZmluYWxpemVMTEludElubGluZUNhY2hlcygpCiAgICAgICAgIHN3aXRjaCAoY3VySW5z
dHJ1Y3Rpb24tPm9wY29kZUlEKCkpIHsKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKICAg
ICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VySW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4o
KS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgIT0gR2V0
QnlJZE1vZGU6OkRlZmF1bHQpCisgICAgICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgICAgICBpZiAoIW9sZFN0
cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJrZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCku
Z2V0KG9sZFN0cnVjdHVyZUlEKSkpCkBAIC0xMjUyLDExICsxMjQzLDEzIEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3Vy
SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAg
aWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZSB8fCB2bS5oZWFwLmlzTWFya2VkKG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgIGlmICghbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmVJRCB8fCB2bS5oZWFwLmlzTWFya2VkKHZtLmhlYXAuc3RydWN0dXJl
SURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKSkpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoT3B0aW9uczo6dmVyYm9zZU9TUigpKQotICAg
ICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0
dXJlICVwLlxuIiwgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGlmIChP
cHRpb25zOjp2ZXJib3NlT1NSKCkpIHsKKyAgICAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9ICFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID8gbnVsbHB0ciA6IHZtLmhlYXAu
c3RydWN0dXJlSURUYWJsZSgpLmdldChtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEKTsKKyAg
ICAgICAgICAgICAgICBkYXRhTG9nRigiQ2xlYXJpbmcgTExJbnQgdG9fdGhpcyB3aXRoIHN0cnVj
dHVyZSAlcC5cbiIsIHN0cnVjdHVyZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZXRh
ZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9U
aGlzU3RhdHVzID0gbWVyZ2UobWV0YWRhdGEubV90b1RoaXNTdGF0dXMsIFRvVGhpc0NsZWFyZWRC
eUdDKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzI0LDEzICsxMzE3LDEz
IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAgICB9KTsK
IAogICAgIGZvckVhY2hMTEludENhbGxMaW5rSW5mbyhbJl0oTExJbnRDYWxsTGlua0luZm8mIGNh
bGxMaW5rSW5mbykgewotICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2VkKCkgJiYgIXZt
LmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgaWYg
KGNhbGxMaW5rSW5mby5pc0xpbmtlZCgpICYmICF2bS5oZWFwLmlzTWFya2VkKGNhbGxMaW5rSW5m
by5jYWxsZWUoKSkpIHsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp2ZXJib3NlT1NSKCkpCiAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICIsICp0aGlz
LCAiXG4iKTsKICAgICAgICAgICAgIGNhbGxMaW5rSW5mby51bmxpbmsoKTsKICAgICAgICAgfQot
ICAgICAgICBpZiAoISFjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUgJiYgIXZtLmhlYXAuaXNN
YXJrZWQoY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKLSAgICAgICAgICAgIGNh
bGxMaW5rSW5mby5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICBpZiAoY2FsbExpbmtJ
bmZvLmxhc3RTZWVuQ2FsbGVlKCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmxh
c3RTZWVuQ2FsbGVlKCkpKQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLmNsZWFyTGFzdFNlZW5D
YWxsZWUoKTsKICAgICB9KTsKIH0KIApAQCAtMjU3NSwxNyArMjU2OCwyNCBAQCBBcnJheVByb2Zp
bGUqIENvZGVCbG9jazo6Z2V0QXJyYXlQcm9maWxlKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYs
IHVuc2lnbmVkIGJ5dAogewogICAgIGF1dG8gaW5zdHJ1Y3Rpb24gPSBpbnN0cnVjdGlvbnMoKS5h
dChieXRlY29kZU9mZnNldCk7CiAgICAgc3dpdGNoIChpbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkg
ewotI2RlZmluZSBDQVNFKE9wKSBcCisjZGVmaW5lIENBU0UxKE9wKSBcCiAgICAgY2FzZSBPcDo6
b3Bjb2RlSUQ6IFwKICAgICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRh
dGEodGhpcykubV9hcnJheVByb2ZpbGU7CiAKLSAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJB
WV9QUk9GSUxFKENBU0UpCi0jdW5kZWYgQ0FTRQorI2RlZmluZSBDQVNFMihPcCkgXAorICAgIGNh
c2UgT3A6Om9wY29kZUlEOiBcCisgICAgICAgIHJldHVybiAmaW5zdHJ1Y3Rpb24tPmFzPE9wPigp
Lm1ldGFkYXRhKHRoaXMpLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlOworCisgICAgRk9S
X0VBQ0hfT1BDT0RFX1dJVEhfQVJSQVlfUFJPRklMRShDQVNFMSkKKyAgICBGT1JfRUFDSF9PUENP
REVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhDQVNFMikKKworI3VuZGVmIENBU0UxCisjdW5k
ZWYgQ0FTRTIKIAogICAgIGNhc2UgT3BHZXRCeUlkOjpvcGNvZGVJRDogewogICAgICAgICBhdXRv
IGJ5dGVjb2RlID0gaW5zdHJ1Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKTsKICAgICAgICAgYXV0byYg
bWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YSh0aGlzKTsKLSAgICAgICAgaWYgKG1ldGFkYXRh
Lm1fbW9kZSA9PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpCisgICAgICAgIGlmIChtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkKICAgICAg
ICAgICAgIHJldHVybiAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFy
cmF5UHJvZmlsZTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMjYzMywxNiArMjYzMywxNyBA
QCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVu
c2lnbmVkJiBudW1iZXJPZkxpdmVOb25BcgogICAgIG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFs
dWVQcm9maWxlcyA9IDA7CiAgICAgbnVtYmVyT2ZTYW1wbGVzSW5Qcm9maWxlcyA9IDA7IC8vIElm
IHRoaXMgZGl2aWRlZCBieSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyBlcXVhbHMgbnVt
YmVyT2ZWYWx1ZVByb2ZpbGVzKCkgdGhlbiB2YWx1ZSBwcm9maWxlcyBhcmUgZnVsbC4KIAotICAg
IGZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkgeworICAgIGZv
ckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSwgYm9vbCBpc0FyZ3Vt
ZW50KSB7CiAgICAgICAgIHVuc2lnbmVkIG51bVNhbXBsZXMgPSBwcm9maWxlLnRvdGFsTnVtYmVy
T2ZTYW1wbGVzKCk7CisgICAgICAgIHN0YXRpY19hc3NlcnQoVmFsdWVQcm9maWxlOjpudW1iZXJP
ZkJ1Y2tldHMgPT0gMSk7CiAgICAgICAgIGlmIChudW1TYW1wbGVzID4gVmFsdWVQcm9maWxlOjpu
dW1iZXJPZkJ1Y2tldHMpCiAgICAgICAgICAgICBudW1TYW1wbGVzID0gVmFsdWVQcm9maWxlOjpu
dW1iZXJPZkJ1Y2tldHM7IC8vIFdlIGRvbid0IHdhbnQgcHJvZmlsZXMgdGhhdCBhcmUgZXh0cmVt
ZWx5IGhvdCB0byBiZSBnaXZlbiBtb3JlIHdlaWdodC4KICAgICAgICAgbnVtYmVyT2ZTYW1wbGVz
SW5Qcm9maWxlcyArPSBudW1TYW1wbGVzOwotICAgICAgICBpZiAocHJvZmlsZS5tX2J5dGVjb2Rl
T2Zmc2V0IDwgMCkgeworICAgICAgICBpZiAoaXNBcmd1bWVudCkgewogICAgICAgICAgICAgcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQotICAgICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBw
cm9maWxlLm1fcHJlZGljdGlvbiAhPSBTcGVjTm9uZSkKKyAgICAgICAgaWYgKHByb2ZpbGUubnVt
YmVyT2ZTYW1wbGVzKCkgfHwgcHJvZmlsZS5pc1NhbXBsZWRCZWZvcmUoKSkKICAgICAgICAgICAg
IG51bWJlck9mTGl2ZU5vbkFyZ3VtZW50VmFsdWVQcm9maWxlcysrOwogICAgICAgICBwcm9maWxl
LmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgIH0pOwpAQCAtMjY1MCw3ICsy
NjUxLDcgQEAgdm9pZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zQW5kQ291bnRMaXZl
bmVzcyh1bnNpZ25lZCYgbnVtYmVyT2ZMaXZlTm9uQXIKICAgICBpZiAoYXV0byogcmFyZURhdGEg
PSBtX3JhcmVEYXRhLmdldCgpKSB7CiAgICAgICAgIGZvciAoYXV0byYgcHJvZmlsZUJ1Y2tldCA6
IHJhcmVEYXRhLT5tX2NhdGNoUHJvZmlsZXMpIHsKICAgICAgICAgICAgIHByb2ZpbGVCdWNrZXQt
PmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Ci0gICAgICAg
ICAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpAQCAtMjgwMCwxMiArMjgw
MSwxMSBAQCB2b2lkIENvZGVCbG9jazo6bm90aWZ5TGV4aWNhbEJpbmRpbmdVcGRhdGUoKQogdm9p
ZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIHsKICAgICBkYXRhTG9nKCJWYWx1ZVBy
b2ZpbGUgZm9yICIsICp0aGlzLCAiOlxuIik7Ci0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbXShW
YWx1ZVByb2ZpbGUmIHByb2ZpbGUpIHsKLSAgICAgICAgaWYgKHByb2ZpbGUubV9ieXRlY29kZU9m
ZnNldCA8IDApIHsKLSAgICAgICAgICAgIEFTU0VSVChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQg
PT0gLTEpOwotICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGFyZyA9ICV1OiAiLCBpKTsKLSAgICAg
ICAgfSBlbHNlCi0gICAgICAgICAgICBkYXRhTG9nRigiICAgYmMgPSAlZDogIiwgcHJvZmlsZS5t
X2J5dGVjb2RlT2Zmc2V0KTsKKyAgICBmb3JFYWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmls
ZSYgcHJvZmlsZSwgYm9vbCBpc0FyZ3VtZW50KSB7CisgICAgICAgIGlmIChpc0FyZ3VtZW50KQor
ICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGFyZzogIik7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGRhdGFMb2dGKCIgICBiYzogIik7CiAgICAgICAgIGlmICghcHJvZmlsZS5udW1iZXJPZlNh
bXBsZXMoKSAmJiBwcm9maWxlLm1fcHJlZGljdGlvbiA9PSBTcGVjTm9uZSkgewogICAgICAgICAg
ICAgZGF0YUxvZ0YoIjxlbXB0eT5cbiIpOwogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKaW5kZXggYTkzYzM2ZmI5MThmM2Iz
MGNhYjBjNzk4ZTYxZTcwY2E1OTFiMThjZi4uZjVkYmZlYzY5NGJkMTQ3MmI5OWFjNWYwZWIzMWQw
ZDBhZDBjZmZkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aApAQCAtNDc4LDcgKzQ3OCw2IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIHsKICAgICAgICAgQVNTRVJUKHZtKCktPmNhblVzZUpJVCgpKTsgLy8gVGhpcyBpcyBvbmx5
IGNhbGxlZCBmcm9tIHRoZSB2YXJpb3VzIEpJVCBjb21waWxlcnMgb3IgcGxhY2VzIHRoYXQgZmly
c3QgY2hlY2sgbnVtYmVyT2ZBcmd1bWVudFZhbHVlUHJvZmlsZXMgYmVmb3JlIGNhbGxpbmcgdGhp
cy4KICAgICAgICAgVmFsdWVQcm9maWxlJiByZXN1bHQgPSBtX2FyZ3VtZW50VmFsdWVQcm9maWxl
c1thcmd1bWVudEluZGV4XTsKLSAgICAgICAgQVNTRVJUKHJlc3VsdC5tX2J5dGVjb2RlT2Zmc2V0
ID09IC0xKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKQEAgLTk3NCw3ICs5NzMs
NyBAQCBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgSlNDZWxsIHsKICAgICBWTSogbV92bTsKIAog
ICAgIGNvbnN0IHZvaWQqIG1faW5zdHJ1Y3Rpb25zUmF3UG9pbnRlciB7IG51bGxwdHIgfTsKLSAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxO
b2RlPExMSW50Q2FsbExpbmtJbmZvPj4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CisgICAgU2VudGlu
ZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBQYWNrZWRSYXdTZW50aW5lbE5vZGU8TExJ
bnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJbnRDYWxsczsKICAgICBTdHJ1Y3R1cmVXYXRj
aHBvaW50TWFwIG1fbGxpbnRHZXRCeUlkV2F0Y2hwb2ludE1hcDsKICAgICBSZWZQdHI8SklUQ29k
ZT4gbV9qaXRDb2RlOwogI2lmIEVOQUJMRShKSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaAppbmRleCBmMDBiMzk3ODczMmU0ZjY3ZGQy
ZTU1NjEwNDc3ZmRjMmY3YTVjYWNiLi4yMmU3NmIxODVlYjllYmE5N2RlOWJiMDgxZDY0MTg2YmY1
NGNlNGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2tJbmxpbmVzLmgKQEAgLTM1LDExICszNSwxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9y
Pgogdm9pZCBDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVByb2ZpbGUoY29uc3QgRnVuY3RvciYgZnVu
YykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZBcmd1bWVudFZhbHVl
UHJvZmlsZXMoKTsgKytpKQotICAgICAgICBmdW5jKHZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGkp
KTsKKyAgICAgICAgZnVuYyh2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudChpKSwgdHJ1ZSk7CiAKICAg
ICBpZiAobV9tZXRhZGF0YSkgewogI2RlZmluZSBWSVNJVChfX29wKSBcCi0gICAgbV9tZXRhZGF0
YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9w
cm9maWxlKTsgfSk7CisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1l
dGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9wcm9maWxlLCBmYWxzZSk7IH0pOwogCiAgICAgICAg
IEZPUl9FQUNIX09QQ09ERV9XSVRIX1ZBTFVFX1BST0ZJTEUoVklTSVQpCiAKQEAgLTUzLDE2ICs1
MywyMSBAQCB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaEFycmF5UHJvZmlsZShjb25zdCBGdW5jdG9y
JiBmdW5jKQogewogICAgIGlmIChtX21ldGFkYXRhKSB7CiAgICAgICAgIG1fbWV0YWRhdGEtPmZv
ckVhY2g8T3BHZXRCeUlkPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7Ci0gICAgICAgICAgICBpZiAo
bWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkKKyAgICAgICAgICAg
IGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxl
bmd0aCkKICAgICAgICAgICAgICAgICBmdW5jKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpOwogICAgICAgICB9KTsKIAotI2RlZmluZSBWSVNJVChf
X29wKSBcCisjZGVmaW5lIFZJU0lUMShfX29wKSBcCiAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxf
X29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEubV9hcnJheVByb2ZpbGUp
OyB9KTsKIAotICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKFZJU0lU
KQorI2RlZmluZSBWSVNJVDIoX19vcCkgXAorICAgIG1fbWV0YWRhdGEtPmZvckVhY2g8X19vcD4o
WyZdIChhdXRvJiBtZXRhZGF0YSkgeyBmdW5jKG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJy
YXlQcm9maWxlKTsgfSk7CiAKLSN1bmRlZiBWSVNJVAorICAgICAgICBGT1JfRUFDSF9PUENPREVf
V0lUSF9BUlJBWV9QUk9GSUxFKFZJU0lUMSkKKyAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhf
TExJTlRfQ0FMTF9MSU5LX0lORk8oVklTSVQyKQorCisjdW5kZWYgVklTSVQxCisjdW5kZWYgVklT
SVQyCiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZE1ldGFkYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKaW5kZXggZGM0MzRlNmM0YjdmZDRlZDg0N2ZjYjNmMzdjMTJhMzc1MTA1
MWU5ZC4uNjUzNjZhOTI4NTUyMWM0MDA2NTEzMzAxODlkMmNlNzhmMjc3NjA2MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaApAQCAtMjgs
MzQgKzI4LDcyIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRCeUlkTW9kZSA6
IHVpbnQ4X3QgewotICAgIERlZmF1bHQgPSAwLAotICAgIFVuc2V0ID0gMSwKLSAgICBQcm90b0xv
YWQgPSAyLAorICAgIFByb3RvTG9hZCA9IDAsIC8vIFRoaXMgbXVzdCBiZSB6ZXJvIHRvIHJldXNl
IHRoZSBoaWdoZXIgYml0cyBvZiB0aGUgcG9pbnRlciBhcyB0aGlzIFByb3RvTG9hZCBtb2RlLgor
ICAgIERlZmF1bHQgPSAxLAorICAgIFVuc2V0ID0gMiwKICAgICBBcnJheUxlbmd0aCA9IDMsCiB9
OwogCisvLyBJbiA2NGJpdCBMaXR0bGUgZW5kaWFuIGFyY2hpdGVjdHVyZSwgdGhpcyB1bmlvbiBz
aGFyZXMgUHJvdG9Mb2FkJ3MgSlNPYmplY3QqIGNhY2hlZFNsb3Qgd2l0aCAiaGlnQ291bnRGb3JM
TEludENhY2hpbmciIGFuZCAibW9kZSIuCisvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgdGhl
c2UgdmFsdWVzIG11c3QgYmUgemVybyBpZiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCiB1bmlvbiBH
ZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICBHZXRCeUlkTW9kZU1ldGFkYXRhKCkKLSAgICB7IH0K
KyAgICB7CisgICAgICAgIGRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAgZGVm
YXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKKyAgICAgICAgZGVmYXVsdE1vZGUucGFkZGluZzEg
PSAwOworICAgICAgICBtb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgICAgIGhpdENv
dW50Rm9yTExJbnRDYWNoaW5nID0gT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTEludENh
Y2hpbmcoKTsKKyAgICB9CiAKICAgICBzdHJ1Y3QgRGVmYXVsdCB7CiAgICAgICAgIFN0cnVjdHVy
ZUlEIHN0cnVjdHVyZUlEOwogICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQ7Ci0g
ICAgfSBkZWZhdWx0TW9kZTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZzE7CisgICAgfTsKKyAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihEZWZhdWx0KSA9PSAxMik7CiAKICAgICBzdHJ1Y3QgVW5z
ZXQgewogICAgICAgICBTdHJ1Y3R1cmVJRCBzdHJ1Y3R1cmVJRDsKLSAgICB9IHVuc2V0TW9kZTsK
KyAgICAgICAgdW5zaWduZWQgcGFkZGluZzE7CisgICAgICAgIHVuc2lnbmVkIHBhZGRpbmcyOwor
ICAgIH07CisgICAgc3RhdGljX2Fzc2VydChzaXplb2YoVW5zZXQpID09IDEyKTsKKworICAgIHN0
cnVjdCBBcnJheUxlbmd0aCB7CisgICAgICAgIEFycmF5UHJvZmlsZSBhcnJheVByb2ZpbGU7Cisg
ICAgfTsKKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihBcnJheUxlbmd0aCkgPT0gMTIpOwogCiAg
ICAgc3RydWN0IFByb3RvTG9hZCB7CiAgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwog
ICAgICAgICBQcm9wZXJ0eU9mZnNldCBjYWNoZWRPZmZzZXQ7CiAgICAgICAgIEpTT2JqZWN0KiBj
YWNoZWRTbG90OwotICAgIH0gcHJvdG9Mb2FkTW9kZTsKKyAgICB9OwogCi0gICAgc3RydWN0IEFy
cmF5TGVuZ3RoIHsKLSAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKLSAgICB9IGFy
cmF5TGVuZ3RoTW9kZTsKKyNpZiBDUFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkK
KyAgICBzdHJ1Y3QgeworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBEZWZhdWx0IGRlZmF1
bHRNb2RlOworICAgICAgICAgICAgVW5zZXQgdW5zZXRNb2RlOworICAgICAgICAgICAgQXJyYXlM
ZW5ndGggYXJyYXlMZW5ndGhNb2RlOworICAgICAgICB9OworICAgICAgICB1aW50MTZfdCBwYWRk
aW5nMzsKKyAgICAgICAgR2V0QnlJZE1vZGUgbW9kZTsKKyAgICAgICAgdWludDhfdCBoaXRDb3Vu
dEZvckxMSW50Q2FjaGluZzsgLy8gVGhpcyBtdXN0IGJlIHplcm8gd2hlbiB3ZSB1c2UgUHJvdG9M
b2FkIG1vZGUuCisgICAgfTsKKyAgICBQcm90b0xvYWQgcHJvdG9Mb2FkTW9kZTsKKyNlbHNlCisg
ICAgdW5pb24geworICAgICAgICBEZWZhdWx0IGRlZmF1bHRNb2RlOworICAgICAgICBVbnNldCB1
bnNldE1vZGU7CisgICAgICAgIEFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICAgICAg
UHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CisgICAgfTsKKyAgICBHZXRCeUlkTW9kZSBtb2RlOwor
ICAgIHVpbnQ4X3QgaGl0Q291bnRGb3JMTEludENhY2hpbmc7CisjZW5kaWYKIH07CitzdGF0aWNf
YXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCmluZGV4IDZlNGU4YmZkYmUxNzVjMDZiZjk4MmU4MzQwZWM2NDJjMzljMjAxODYuLmRi
OWFkMTYwYWMyODEzMGYzOTg0MWZmM2JmZWIzMmI2ODNkZGVhZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKQEAgLTY0LDcgKzY0LDcg
QEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQKICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBpbnN0
cnVjdGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHByb2ZpbGVkQmxvY2spOwogICAgICAg
ICAvLyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBqdXN0IGJhaWwgaWYgd2Ugc2VlIGEgZ2V0X2J5X2lk
X3Byb3RvX2xvYWQuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTgwMzkKLSAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9k
ZTo6RGVmYXVsdCkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgIT0g
R2V0QnlJZE1vZGU6OkRlZmF1bHQpCiAgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCBmYWxzZSk7CiAgICAgICAgIHN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQ7CiAgICAgICAgIGJyZWFrOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaApp
bmRleCA4NGI1YzExYzU4NjY1ZDMyYmJkNWMyMjBkOWE5MTgzODI4NGExZTE2Li43YzI3Y2RmNjZl
N2E5YmRkYWEyZjZhYmVhMjYyOGZjYjQ2OTM5ZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaApAQCAtMzQsMTAgKzM0LDEzIEBA
IG5hbWVzcGFjZSBKU0MgewogCiBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CiAKLXN0cnVjdCBMTEludENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5m
bz4gewotICAgIExMSW50Q2FsbExpbmtJbmZvKCkKLSAgICB7Ci0gICAgfQorY2xhc3MgTExJbnRD
YWxsTGlua0luZm8gOiBwdWJsaWMgUGFja2VkUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJ
bmZvPiB7CitwdWJsaWM6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IHVubGlua2VkQml0ID0gMHgxOworCisg
ICAgTExJbnRDYWxsTGlua0luZm8oKSA9IGRlZmF1bHQ7CiAgICAgCiAgICAgfkxMSW50Q2FsbExp
bmtJbmZvKCkKICAgICB7CkBAIC00NSwxOSArNDgsNDkgQEAgc3RydWN0IExMSW50Q2FsbExpbmtJ
bmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CiAg
ICAgICAgICAgICByZW1vdmUoKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuICEhY2FsbGVlOyB9CisgICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuICEo
bV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgJiB1bmxpbmtlZEJpdCk7IH0KICAg
ICAKKworICAgIHZvaWQgbGluayhWTSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBjYWxs
ZWUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBjb2RlUHRyKQorICAgIHsK
KyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICAgICAg
bV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgPSBiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihjYWxsZWUpOworICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihvd25lciwgY2FsbGVl
KTsKKyAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgfQorCiAgICAg
dm9pZCB1bmxpbmsoKQogICAgIHsKLSAgICAgICAgY2FsbGVlLmNsZWFyKCk7Ci0gICAgICAgIG1h
Y2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCk7
CisgICAgICAgIC8vIE1ha2UgbGluayBpbnZhbGlkYXRlZC4gSXQgd29ya3MgYmVjYXVzZSBMTElu
dCB0ZXN0cyB0aGUgZ2l2ZW4gY2FsbGVlIHdpdGggdGhpcyBwb2ludGVyLiBCdXQgaXQgaXMgc3Rp
bGwgdmFsaWQgYXMgbGFzdFNlZW5DYWxsZWUhCisgICAgICAgIG1fY2FsbGVlT3JMYXN0U2VlbkNh
bGxlZVdpdGhMaW5rQml0IHw9IHVubGlua2VkQml0OworICAgICAgICBtX21hY2hpbmVDb2RlVGFy
Z2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+KCk7CiAgICAgICAgIGlm
IChpc09uTGlzdCgpKQogICAgICAgICAgICAgcmVtb3ZlKCk7CiAgICAgfQotICAgIAotICAgIFdy
aXRlQmFycmllcjxKU09iamVjdD4gY2FsbGVlOwotICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bGFzdFNlZW5DYWxsZWU7Ci0gICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IG1hY2hpbmVDb2RlVGFyZ2V0OworCisgICAgSlNPYmplY3QqIGNhbGxlZSgpIGNvbnN0CisgICAg
eworICAgICAgICBpZiAoIWlzTGlua2VkKCkpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU09iamVjdCo+KG1fY2FsbGVlT3JMYXN0U2Vl
bkNhbGxlZVdpdGhMaW5rQml0KTsKKyAgICB9CisKKyAgICBKU09iamVjdCogbGFzdFNlZW5DYWxs
ZWUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxKU09iamVjdCo+
KG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ICYgfnVubGlua2VkQml0KTsKKyAg
ICB9CisKKyAgICB2b2lkIGNsZWFyTGFzdFNlZW5DYWxsZWUoKQorICAgIHsKKyAgICAgICAgbV9j
YWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgPSB1bmxpbmtlZEJpdDsKKyAgICB9CisK
KyAgICBBcnJheVByb2ZpbGUgbV9hcnJheVByb2ZpbGU7CisKK3ByaXZhdGU6CisgICAgdWludHB0
cl90IG1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0IHsgdW5saW5rZWRCaXQgfTsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gbV9tYWNoaW5lQ29kZVRh
cmdldDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0
Y2hwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5
cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAppbmRleCAwZWY2YTU1YzljNzE5
NjAzZjFhMmUzOGI1ODA1NjZmMGEyNDY3YmUxLi41N2FiYjlhNGMwM2YyYTlmZjUxZWNlZGNkYmYy
MTRlODRhOTQwOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVT
dHJ1Y3R1cmVXYXRjaHBvaW50LmNwcApAQCAtNjUsNyArNjUsOCBAQCB2b2lkIExMSW50UHJvdG90
eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludDo6ZmlyZUludGVybmFsKFZNJiB2bSwg
Y29uc3QgRgogCiB2b2lkIExMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZShPcEdldEJ5SWQ6Ok1ldGFkYXRhJiBtZXRhZGF0
YSkKIHsKLSAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKKyAgICAv
LyBLZWVwIGhpdENvdW50Rm9yTExJbnRDYWNoaW5nIHZhbHVlLgorICAgIG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSAwOwogICAgIG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxl
LmgKaW5kZXggOWMzYjA2ODQyNzAzNGIwODliYTA5OGU4MjJmZmQwZTE2ZWYzNTA5Ni4uOGY2MGVi
MGY0MGFjM2IxNmQ2YWIwM2RhZGRjNjIyODg5Y2ViNGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5kVmFsdWVQcm9maWxlLmgKQEAg
LTEyOSwxNyArMTI5LDE4IEBAIHN0cnVjdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSA6IHB1Ymxp
YyBNaW5pbWFsVmFsdWVQcm9maWxlIHsKICAgICB9CiAgICAgCiAgICAgZXhwbGljaXQgTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUoY29uc3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkmIGtleSkK
LSAgICAgICAgOiBNaW5pbWFsVmFsdWVQcm9maWxlKGtleS5ieXRlY29kZU9mZnNldCgpKQotICAg
ICAgICAsIG1fb3BlcmFuZChrZXkub3BlcmFuZCgpKQorICAgICAgICA6IE1pbmltYWxWYWx1ZVBy
b2ZpbGUoKQorICAgICAgICAsIG1fa2V5KGtleSkKICAgICB7CiAgICAgfQogICAgIAogICAgIExh
enlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IGtleSgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1
cm4gTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkobV9ieXRlY29kZU9mZnNldCwgbV9vcGVyYW5k
KTsKKyAgICAgICAgcmV0dXJuIG1fa2V5OwogICAgIH0KICAgICAKICAgICBWaXJ0dWFsUmVnaXN0
ZXIgbV9vcGVyYW5kOworICAgIExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5IG1fa2V5OwogICAg
IAogICAgIHR5cGVkZWYgU2VnbWVudGVkVmVjdG9yPExhenlPcGVyYW5kVmFsdWVQcm9maWxlLCA4
PiBMaXN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRhZGF0YVRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFU
YWJsZS5oCmluZGV4IGE1ZDQxMjFiMWQ0MWQxNjFiZjI2NTQyZTA5Mjg2Y2ZiZDk5Mzk1YjguLjk1
NGQwYmExNmQ3ODIxMDM5N2JjZmZmOTQ4Njg5ODNiYTIwMmM0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaApAQCAtODgsMTEgKzg4LDYgQEAg
Y2xhc3MgTWV0YWRhdGFUYWJsZSB7CiAgICAgICAgIHJldHVybiByZWZDb3VudCgpID09IDE7CiAg
ICAgfQogCi0gICAgVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQqIGJ1ZmZlcigpCi0gICAg
ewotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zm
c2V0Kj4odGhpcyk7Ci0gICAgfQotCiBwcml2YXRlOgogICAgIE1ldGFkYXRhVGFibGUoVW5saW5r
ZWRNZXRhZGF0YVRhYmxlJik7CiAKQEAgLTEwMSw2ICs5NiwxMSBAQCBjbGFzcyBNZXRhZGF0YVRh
YmxlIHsKICAgICAgICAgcmV0dXJuICpiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxl
OjpMaW5raW5nRGF0YSo+KChiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHRoaXMpIC0gc2l6ZW9mKFVu
bGlua2VkTWV0YWRhdGFUYWJsZTo6TGlua2luZ0RhdGEpKSk7CiAgICAgfQogCisgICAgVW5saW5r
ZWRNZXRhZGF0YVRhYmxlOjpPZmZzZXQqIGJ1ZmZlcigpCisgICAgeworICAgICAgICByZXR1cm4g
Yml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0Kj4odGhpcyk7CisgICAg
fQorCiAgICAgQUxXQVlTX0lOTElORSB1aW50OF90KiBnZXRJbXBsKHVuc2lnbmVkIGkpCiAgICAg
ewogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSArIGJ1ZmZlcigp
W2ldOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUuaAppbmRleCBhNzA3NTNhN2I5OTY0ZGM4YzVhZjYxODNmMzgwMmUw
NTY0ZTVkZThjLi5mNTY3OWM5M2U1Y2UwZDRjNWJiMTQ4YWUzNWM3MjhlNTMyMzMzMjk4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUuaApAQCAtMzUsMTcgKzM1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFz
cyBGdW5jdGlvblJhcmVEYXRhOwogCi1jbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7Cit0
ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgorY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlIHsKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogcHVibGljOgot
ICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZBbGxvY2F0b3IoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIG1fYWxsb2NhdG9yKTsgfQotICAgIHN0
YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VU
T0YoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIG1fc3RydWN0dXJlKTsgfQotICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9pbmxpbmVDYXBhY2l0eSk7IH0KKyAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZSwgbV9hbGxvY2F0b3IpOyB9CisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UsIG1fc3RydWN0dXJlKTsgfQogCi0gICAgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUoKQotICAgICAgICA6IG1faW5saW5lQ2FwYWNpdHkoMCkKLSAgICB7
Ci0gICAgfQorICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZSgpID0gZGVmYXVsdDsKIAog
ICAgIGJvb2wgaXNOdWxsKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlOyB9CiAKQEAgLTU4LDM3ICs1
NSw3NCBAQCBjbGFzcyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSB7CiAgICAgICAgIFdURjo6bG9h
ZExvYWRGZW5jZSgpOwogICAgICAgICByZXR1cm4gc3RydWN0dXJlOwogICAgIH0KKworcHJvdGVj
dGVkOgorICAgIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgbV9hbGxvY2F0b3IgPSBBbGxv
Y2F0b3IoKTsKKyAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgQVNTRVJUKGlz
TnVsbCgpKTsKKyAgICB9CisKKyAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9yJiB2
aXNpdG9yKQorICAgIHsKKyAgICAgICAgdmlzaXRvci5hcHBlbmQobV9zdHJ1Y3R1cmUpOworICAg
IH0KKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50
KFZNJiwgSlNPYmplY3QqIHByb3RvdHlwZSk7CisKKyAgICBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7
IC8vIFByZWNvbXB1dGVkIHRvIG1ha2UgdGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVkIGNvZGUu
CisgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7Cit9OworCitjbGFzcyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSA6IHB1YmxpYyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJh
c2U8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU+IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0g
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPE9iamVjdEFsbG9jYXRpb25Qcm9maWxlPjsKKwor
ICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgPSBkZWZhdWx0OworCisgICAgdXNpbmcgQmFz
ZTo6Y2xlYXI7CisgICAgdXNpbmcgQmFzZTo6dmlzaXRBZ2dyZWdhdGU7CisKKyAgICB2b2lkIHNl
dFByb3RvdHlwZShWTSYsIEpTQ2VsbCosIEpTT2JqZWN0KikgeyB9Cit9OworCitjbGFzcyBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUgOiBwdWJsaWMgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVCYXNlPE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZT4geworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlPjsKKworICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZSgpID0gZGVmYXVsdDsKKwogICAgIEpTT2JqZWN0KiBwcm90b3R5
cGUoKQogICAgIHsKICAgICAgICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IG1fcHJvdG90eXBlLmdl
dCgpOwogICAgICAgICBXVEY6OmxvYWRMb2FkRmVuY2UoKTsKICAgICAgICAgcmV0dXJuIHByb3Rv
dHlwZTsKICAgICB9Ci0gICAgdW5zaWduZWQgaW5saW5lQ2FwYWNpdHkoKSB7IHJldHVybiBtX2lu
bGluZUNhcGFjaXR5OyB9Ci0KIAogICAgIHZvaWQgY2xlYXIoKQogICAgIHsKLSAgICAgICAgbV9h
bGxvY2F0b3IgPSBBbGxvY2F0b3IoKTsKLSAgICAgICAgbV9zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICAgICAgQmFzZTo6Y2xlYXIoKTsKICAgICAgICAgbV9wcm90b3R5cGUuY2xlYXIoKTsKLSAgICAg
ICAgbV9pbmxpbmVDYXBhY2l0eSA9IDA7CiAgICAgICAgIEFTU0VSVChpc051bGwoKSk7CiAgICAg
fQogCiAgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB7
Ci0gICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fc3RydWN0dXJlKTsKKyAgICAgICAgQmFzZTo6dmlz
aXRBZ2dyZWdhdGUodmlzaXRvcik7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fcHJvdG90eXBl
KTsKICAgICB9CiAKLXByaXZhdGU6Ci0gICAgdW5zaWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVy
dHlDb3VudChWTSYsIEpTT2JqZWN0KiBwcm90b3R5cGUpOworICAgIHZvaWQgc2V0UHJvdG90eXBl
KFZNJiB2bSwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIG9iamVjdCkKKyAgICB7CisgICAgICAg
IG1fcHJvdG90eXBlLnNldCh2bSwgb3duZXIsIG9iamVjdCk7CisgICAgfQogCi0gICAgQWxsb2Nh
dG9yIG1fYWxsb2NhdG9yOyAvLyBQcmVjb21wdXRlZCB0byBtYWtlIHRoaW5ncyBlYXNpZXIgZm9y
IGdlbmVyYXRlZCBjb2RlLgotICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJl
OworcHJpdmF0ZToKICAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IG1fcHJvdG90eXBlOwotICAg
IHVuc2lnbmVkIG1faW5saW5lQ2FwYWNpdHk7CiB9OwogCisKKwogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKaW5kZXggNDk5OTEyMWIxNjYwNjQzYzg1OTdl
MzIwYTBhNjI1ZGRjMmM1ZDY4Mi4uZjExYzRjYzRmNWY0M2FhNmY3MzQ3ODU0NDBhZGY3YTBiZTgx
ODkzNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaApAQCAtMzEsMTIgKzMxLDExIEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCi1BTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNDZWxsKiBvd25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5m
ZXJyZWRJbmxpbmVDYXBhY2l0eSwgSlNGdW5jdGlvbiogY29uc3RydWN0b3IsIEZ1bmN0aW9uUmFy
ZURhdGEqIGZ1bmN0aW9uUmFyZURhdGEpCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgorQUxX
QVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6aW5p
dGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0Nl
bGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90eXBlLCB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNh
cGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciwgRnVuY3Rpb25SYXJlRGF0YSogZnVuY3Rp
b25SYXJlRGF0YSkKIHsKICAgICBBU1NFUlQoIW1fYWxsb2NhdG9yKTsKICAgICBBU1NFUlQoIW1f
c3RydWN0dXJlKTsKLSAgICBBU1NFUlQoIW1fcHJvdG90eXBlKTsKLSAgICBBU1NFUlQoIW1faW5s
aW5lQ2FwYWNpdHkpOwogCiAgICAgLy8gRklYTUU6IFRlYWNoIGNyZWF0ZV90aGlzJ3MgZmFzdCBw
YXRoIGhvdyB0byBhbGxvY2F0ZSBwb2x5CiAgICAgLy8gcHJvdG8gb2JqZWN0czogaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzUxNwpAQCAtNTYsOCArNTUsNyBAQCBB
TFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9m
aWxlKFZNJiB2bSwgSlNHbG9iYWxPYgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RydWN0
dXJlLT50eXBlSW5mbygpLnR5cGUoKSA9PSBGaW5hbE9iamVjdFR5cGUpOwogICAgICAgICAgICAg
bV9hbGxvY2F0b3IgPSBBbGxvY2F0b3IoKTsKICAgICAgICAgICAgIG1fc3RydWN0dXJlLnNldCh2
bSwgb3duZXIsIHN0cnVjdHVyZSk7Ci0gICAgICAgICAgICBtX3Byb3RvdHlwZS5zZXQodm0sIG93
bmVyLCBwcm90b3R5cGUpOwotICAgICAgICAgICAgbV9pbmxpbmVDYXBhY2l0eSA9IHN0cnVjdHVy
ZS0+aW5saW5lQ2FwYWNpdHkoKTsKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PERlcml2ZWQqPih0
aGlzKS0+c2V0UHJvdG90eXBlKHZtLCBvd25lciwgcHJvdG90eXBlKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0xMzgsMTEgKzEzNiwxMSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKFZNJiB2bSwgSlNH
bG9iYWxPYgogICAgIFdURjo6c3RvcmVTdG9yZUZlbmNlKCk7CiAKICAgICBtX3N0cnVjdHVyZS5z
ZXQodm0sIG93bmVyLCBzdHJ1Y3R1cmUpOwotICAgIG1fcHJvdG90eXBlLnNldCh2bSwgb3duZXIs
IHByb3RvdHlwZSk7Ci0gICAgbV9pbmxpbmVDYXBhY2l0eSA9IGlubGluZUNhcGFjaXR5OworICAg
IHN0YXRpY19jYXN0PERlcml2ZWQqPih0aGlzKS0+c2V0UHJvdG90eXBlKHZtLCBvd25lciwgcHJv
dG90eXBlKTsKIH0KIAotQUxXQVlTX0lOTElORSB1bnNpZ25lZCBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChWTSYgdm0sIEpTT2JqZWN0KiBwcm90
b3R5cGUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBEZXJpdmVkPgorQUxXQVlTX0lOTElORSB1bnNpZ25l
ZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQoVk0mIHZtLCBKU09iamVjdCogcHJvdG90eXBlKQogewogICAgIGlmIChwcm90
b3R5cGUgPT0gcHJvdG90eXBlLT5nbG9iYWxPYmplY3Qodm0pLT5vYmplY3RQcm90b3R5cGUoKSkK
ICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
aW5kZXggOGFjNjAzZTNjYzVmN2IxOTM1NDRiYjBjZmYwODQ4ZGRiMjIwNzRjZS4uNDQyN2RkOThh
NDA3MTZmOWUzOGM0NjllNzJjZjBiNjBlOWNjNTk5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaApAQCAtMTExLDEwICsxMTEsNiBAQCBleHRlcm4gY29uc3QgdW5zaWdu
ZWQgb3Bjb2RlTGVuZ3Roc1tdOwogICAgIG1hY3JvKE9wVGFpbENhbGxGb3J3YXJkQXJndW1lbnRz
KSBcCiAgICAgbWFjcm8oT3BDb25zdHJ1Y3RWYXJhcmdzKSBcCiAgICAgbWFjcm8oT3BHZXRCeVZh
bCkgXAotICAgIG1hY3JvKE9wQ2FsbCkgXAotICAgIG1hY3JvKE9wVGFpbENhbGwpIFwKLSAgICBt
YWNybyhPcENhbGxFdmFsKSBcCi0gICAgbWFjcm8oT3BDb25zdHJ1Y3QpIFwKICAgICBtYWNybyhP
cEluQnlWYWwpIFwKICAgICBtYWNybyhPcFB1dEJ5VmFsKSBcCiAgICAgbWFjcm8oT3BQdXRCeVZh
bERpcmVjdCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zh
bHVlUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmls
ZS5oCmluZGV4IGZhMGQzYjA3YTNjNDQ2YmQxYTAwMzBlNTEyNDE4NGUzYjQ0ZmFlOTUuLjQ4ODNi
NGIzZDIxYmJmYzhlZDY2Y2ZiOTQ3NTkwZDcwOTVhYjYxZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKQEAgLTQ0LDE0ICs0NCw2IEBAIHN0cnVj
dCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdG90YWxOdW1i
ZXJPZkJ1Y2tldHMgPSBudW1iZXJPZkJ1Y2tldHMgKyBudW1iZXJPZlNwZWNGYWlsQnVja2V0czsK
ICAgICAKICAgICBWYWx1ZVByb2ZpbGVCYXNlKCkKLSAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0
KC0xKQotICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVy
T2ZCdWNrZXRzOyArK2kpCi0gICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKLSAgICB9Ci0gICAgCi0gICAgVmFsdWVQcm9maWxlQmFzZShpbnQgYnl0
ZWNvZGVPZmZzZXQpCi0gICAgICAgIDogbV9ieXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkK
ICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVj
a2V0czsgKytpKQogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2RlKEpT
VmFsdWUoKSk7CkBAIC04Niw4ICs3OCwxMCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAg
ICAgCiAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlNhbXBsZXMoKSBjb25zdAogICAgIHsKLSAg
ICAgICAgcmV0dXJuIG51bWJlck9mU2FtcGxlcygpICsgbV9udW1iZXJPZlNhbXBsZXNJblByZWRp
Y3Rpb247CisgICAgICAgIHJldHVybiBudW1iZXJPZlNhbXBsZXMoKSArIGlzU2FtcGxlZEJlZm9y
ZSgpOwogICAgIH0KKworICAgIGJvb2wgaXNTYW1wbGVkQmVmb3JlKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVkaWN0aW9uICE9IFNwZWNOb25lOyB9CiAgICAgCiAgICAgYm9vbCBpc0xpdmUoKSBjb25z
dAogICAgIHsKQEAgLTEwOSw3ICsxMDMsNyBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAg
ICAgCiAgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJiBvdXQpCiAgICAgewotICAgICAgICBvdXQu
cHJpbnQoInNhbXBsZXMgPSAiLCB0b3RhbE51bWJlck9mU2FtcGxlcygpLCAiIHByZWRpY3Rpb24g
PSAiLCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CisgICAgICAgIG91dC5wcmludCgi
c2FtcGxlZCBiZWZvcmUgPSAiLCBpc1NhbXBsZWRCZWZvcmUoKSwgIiBsaXZlIHNhbXBsZXMgPSAi
LCBudW1iZXJPZlNhbXBsZXMoKSwgIiBwcmVkaWN0aW9uID0gIiwgU3BlY3VsYXRpb25EdW1wKG1f
cHJlZGljdGlvbikpOwogICAgICAgICBib29sIGZpcnN0ID0gdHJ1ZTsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUobV9idWNrZXRzW2ldKTsKQEAgLTEz
Myw3ICsxMjcsNiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgICAgICBpZiAo
IXZhbHVlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbisrOwogICAgICAgICAgICAgbWVyZ2VT
cGVjdWxhdGlvbihtX3ByZWRpY3Rpb24sIHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShK
U1ZhbHVlKCkpOwpAQCAtMTQyLDE3ICsxMzUsMTMgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2Ug
ewogICAgICAgICByZXR1cm4gbV9wcmVkaWN0aW9uOwogICAgIH0KICAgICAKLSAgICBpbnQgbV9i
eXRlY29kZU9mZnNldDsgLy8gLTEgZm9yIHByb2xvZ3VlCi0gICAgdW5zaWduZWQgbV9udW1iZXJP
ZlNhbXBsZXNJblByZWRpY3Rpb24geyAwIH07Ci0gICAgCi0gICAgU3BlY3VsYXRlZFR5cGUgbV9w
cmVkaWN0aW9uIHsgU3BlY05vbmUgfTsKLSAgICAKICAgICBFbmNvZGVkSlNWYWx1ZSBtX2J1Y2tl
dHNbdG90YWxOdW1iZXJPZkJ1Y2tldHNdOworCisgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0
aW9uIHsgU3BlY05vbmUgfTsKIH07CiAKIHN0cnVjdCBNaW5pbWFsVmFsdWVQcm9maWxlIDogcHVi
bGljIFZhbHVlUHJvZmlsZUJhc2U8MD4gewogICAgIE1pbmltYWxWYWx1ZVByb2ZpbGUoKTogVmFs
dWVQcm9maWxlQmFzZTwwPigpIHsgfQotICAgIE1pbmltYWxWYWx1ZVByb2ZpbGUoaW50IGJ5dGVj
b2RlT2Zmc2V0KTogVmFsdWVQcm9maWxlQmFzZTwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9Owog
CiB0ZW1wbGF0ZTx1bnNpZ25lZCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4KQEAgLTE2Mywy
MyArMTUyLDEyIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzIDog
cHVibGljIFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dOdW1iCiAgICAgICAgIDogVmFsdWVQcm9m
aWxlQmFzZTwxIDw8IGxvZ051bWJlck9mQnVja2V0c0FyZ3VtZW50PigpCiAgICAgewogICAgIH0K
LSAgICBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKGludCBieXRlY29kZU9mZnNl
dCkKLSAgICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJn
dW1lbnQ+KGJ5dGVjb2RlT2Zmc2V0KQotICAgIHsKLSAgICB9CiB9OwogCiBzdHJ1Y3QgVmFsdWVQ
cm9maWxlIDogcHVibGljIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4gewog
ICAgIFZhbHVlUHJvZmlsZSgpIDogVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0czww
PigpIHsgfQotICAgIFZhbHVlUHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpIDogVmFsdWVQcm9m
aWxlV2l0aExvZ051bWJlck9mQnVja2V0czwwPihieXRlY29kZU9mZnNldCkgeyB9CiB9OwogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIGludCBnZXRWYWx1ZVByb2ZpbGVCeXRlY29kZU9m
ZnNldChUKiB2YWx1ZVByb2ZpbGUpCi17Ci0gICAgcmV0dXJuIHZhbHVlUHJvZmlsZS0+bV9ieXRl
Y29kZU9mZnNldDsKLX0KLQogLy8gVGhpcyBpcyBhIG1pbmkgdmFsdWUgcHJvZmlsZSB0byBjYXRj
aCBwYXRob2xvZ2llcy4gSXQgaXMgYSBjb3VudGVyIHRoYXQgZ2V0cwogLy8gaW5jcmVtZW50ZWQg
d2hlbiB3ZSB0YWtlIHRoZSBzbG93IHBhdGggb24gYW55IGluc3RydWN0aW9uLgogc3RydWN0IFJh
cmVDYXNlUHJvZmlsZSB7CkBAIC0xOTgsOCArMTc2LDcgQEAgaW5saW5lIGludCBnZXRSYXJlQ2Fz
ZVByb2ZpbGVCeXRlY29kZU9mZnNldChSYXJlQ2FzZVByb2ZpbGUqIHJhcmVDYXNlUHJvZmlsZSkK
ICAgICByZXR1cm4gcmFyZUNhc2VQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwogfQogCi1zdHJ1
Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCB7Ci0gICAgVmFsdWVQcm9maWxlIG1fcHJvZmlsZTsK
K3N0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIDogcHVibGljIFZhbHVlUHJvZmlsZSB7CiAg
ICAgaW50IG1fb3BlcmFuZDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggNjUwNWFkNTc5MzQ3MDIxMTljNThmYjY3ODdkOWE2
Y2Q4ODM0ZDNjNS4uYjY4NjVmN2FjYWM3MTIwZDhmMTZhNWI0YTY0NTcwNmJlZDZhMGNjZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAg
LTQ3OTUsNyArNDc5NSwxMCBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2ln
bmVkIGxpbWl0KQogICAgICAgICBjYXNlIG9wX3RvX3RoaXM6IHsKICAgICAgICAgICAgIE5vZGUq
IG9wMSA9IGdldFRoaXMoKTsKICAgICAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gY3VycmVudElu
c3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKS5tZXRhZGF0YShjb2RlQmxvY2spOwotICAgICAgICAg
ICAgU3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKTsKKyAgICAgICAgICAgIFN0cnVjdHVyZUlEIGNhY2hlZFN0cnVjdHVyZUlEID0gbWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogY2FjaGVk
U3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChjYWNoZWRTdHJ1Y3R1cmVJRCkK
KyAgICAgICAgICAgICAgICBjYWNoZWRTdHJ1Y3R1cmUgPSBtX3ZtLT5oZWFwLnN0cnVjdHVyZUlE
VGFibGUoKS5nZXQoY2FjaGVkU3RydWN0dXJlSUQpOwogICAgICAgICAgICAgaWYgKG1ldGFkYXRh
Lm1fdG9UaGlzU3RhdHVzICE9IFRvVGhpc09LCiAgICAgICAgICAgICAgICAgfHwgIWNhY2hlZFN0
cnVjdHVyZQogICAgICAgICAgICAgICAgIHx8IGNhY2hlZFN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkt
Pm1ldGhvZFRhYmxlLnRvVGhpcyAhPSBKU09iamVjdDo6aW5mbygpLT5tZXRob2RUYWJsZS50b1Ro
aXMKQEAgLTYwMTEsNyArNjAxNCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAKICAgICAgICAgICAgICAgICBidWZmZXItPmZvckVhY2goWyZdIChW
YWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICAgICAgICAgIFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kKHByb2ZpbGUubV9vcGVyYW5kKTsKLSAgICAgICAgICAgICAg
ICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUubV9wcm9maWxlLmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOworICAgICAgICAgICAgICAgICAgICBTcGVjdWxh
dGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9j
a2VyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG9wZXJhbmQuaXNMb2NhbCgpKQogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9jYWxQcmVkaWN0aW9ucy5hcHBlbmQocHJlZGljdGlvbik7CiAg
ICAgICAgICAgICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAKaW5kZXggZWU1M2Q2MWQ3Zjc1NDY3ODFhOTA0Njc2MGYyYTVhOWVmMzhi
NmVkNS4uMjVjNGMwOTBkNjAwMWU2YmMxMWY0MGI2NDZiOWRmNjc2YjZjMDQxOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0zNTUsNyArMzU1LDcg
QEAgSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXMoRXhlY1N0YXRlKiBl
eGVjLCBKU09iamVjdCogY29uc3RydWN0b3IKICAgICBpZiAoY29uc3RydWN0b3ItPnR5cGUoKSA9
PSBKU0Z1bmN0aW9uVHlwZSAmJiBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+Y2Fu
VXNlQWxsb2NhdGlvblByb2ZpbGUoKSkgewogICAgICAgICBhdXRvIHJhcmVEYXRhID0ganNDYXN0
PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblBy
b2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpOwogICAgICAgICBzY29wZS5yZWxlYXNlQXNzZXJ0
Tm9FeGNlcHRpb24oKTsKLSAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIGFsbG9jYXRp
b25Qcm9maWxlID0gcmFyZURhdGEtPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CisgICAgICAg
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSogYWxsb2NhdGlvblByb2ZpbGUg
PSByYXJlRGF0YS0+b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsKICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBhbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJlKCk7CiAgICAgICAgIEpT
T2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwog
ICAgICAgICBpZiAoc3RydWN0dXJlLT5oYXNQb2x5UHJvdG8oKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBkZWJkMDNlYjFlYzY4
NWQwN2MwYTc1YjFlOGQzZmE0YTllNWM2NzUyLi5kMDQxMGIzNWQzOTAxN2Y4MGRiNTkwNWVkNDky
ZDNlMzM4NjhiYzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcApAQCAtMTI1NjUsMTQgKzEyNTY1LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVDcmVhdGVUaGlzKE5vZGUqIG5vZGUpCiAgICAgc2xvd1BhdGguYXBwZW5kKG1f
aml0LmJyYW5jaElmTm90RnVuY3Rpb24oY2FsbGVlR1BSKSk7CiAgICAgbV9qaXQubG9hZFB0cihK
SVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURh
dGEoKSksIHJhcmVEYXRhR1BSKTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoVGVz
dFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmFyZURhdGFHUFIpKTsKLSAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7Ci0gICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVHUFIpOworICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0
aFByb3RvdHlwZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvckdQUik7CisgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BS
KTsKIAogICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1c3RlZEltbVB0cihudWxscHRyKTsKICAgICBl
bWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRHUFIsIEpJVEFsbG9jYXRvcjo6dmFyaWFibGUoKSwg
YWxsb2NhdG9yR1BSLCBzdHJ1Y3R1cmVHUFIsIGJ1dHRlcmZseSwgc2NyYXRjaEdQUiwgc2xvd1Bh
dGgpOwogCi0gICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhjYWxsZWVHUFIs
IEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhR1BSKTsKLSAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZklubGluZUNhcGFjaXR5KCkpLCBpbmxpbmVDYXBhY2l0eUdQUik7Cisg
ICAgbV9qaXQubG9hZDgoSklUQ29tcGlsZXI6OkFkZHJlc3Moc3RydWN0dXJlR1BSLCBTdHJ1Y3R1
cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBpbmxpbmVDYXBhY2l0eUdQUik7CiAgICAgbV9q
aXQuZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdEdQUiwgaW5saW5lQ2FwYWNpdHlH
UFIpOwogICAgIG1faml0Lm11dGF0b3JGZW5jZSgqbV9qaXQudm0oKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5k
ZXggODk5OTVlNjc0OGQzZjI0MmE1ZTAyMDVjYTBjYWUxNjQ1ODM5N2UzMC4uNzBjOTkzYTcxOGE3
NzFmMTYxZGNmMmJlMzQyMTJmMDkxOGViOWYwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LmgKQEAgLTU3LDggKzU3LDgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogICAgIG1hY3JvKERpcmVjdEFyZ3Vt
ZW50c19taW5DYXBhY2l0eSwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1pbkNhcGFjaXR5KCkp
IFwKICAgICBtYWNybyhEaXJlY3RBcmd1bWVudHNfbWFwcGVkQXJndW1lbnRzLCBEaXJlY3RBcmd1
bWVudHM6Om9mZnNldE9mTWFwcGVkQXJndW1lbnRzKCkpIFwKICAgICBtYWNybyhEaXJlY3RBcmd1
bWVudHNfbW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yLCBEaXJlY3RBcmd1bWVudHM6Om9mZnNl
dE9mTW9kaWZpZWRBcmd1bWVudHNEZXNjcmlwdG9yKCkpIFwKLSAgICBtYWNybyhGdW5jdGlvblJh
cmVEYXRhX2FsbG9jYXRvciwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9y
KCkpIFwKLSAgICBtYWNybyhGdW5jdGlvblJhcmVEYXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVE
YXRhX2FsbG9jYXRvciwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRP
ZkFsbG9jYXRvcigpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAog
ICAgIG1hY3JvKEdldHRlclNldHRlcl9nZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zmc2V0T2ZHZXR0
ZXIoKSkgXAogICAgIG1hY3JvKEdldHRlclNldHRlcl9zZXR0ZXIsIEdldHRlclNldHRlcjo6b2Zm
c2V0T2ZTZXR0ZXIoKSkgXAogICAgIG1hY3JvKEpTQXJyYXlCdWZmZXJWaWV3X2xlbmd0aCwgSlNB
cnJheUJ1ZmZlclZpZXc6Om9mZnNldE9mTGVuZ3RoKCkpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENhbGwuY3BwCmluZGV4IGFmYzRiMjk1M2QzMjI1ZGUwODYxNjcyNzQ3M2NhZDdjZWMzZGMy
NTkuLmMwNjQzODdiZWE2MGM0OTM4NzNhMWU5MWU1NWQ0ZDU1OWY3YWM3NWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcApAQCAtNjksNyArNjksNyBAQCBKSVQ6OmNvbXBpbGVT
ZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJbmZvKikKICAgICAgICAgZW1p
dEdldFZpcnR1YWxSZWdpc3RlcihyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXRJbmNsdWRpbmdUaGlzKDApLCByZWdUMCk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5j
aElmTm90Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QwLCBKU0NlbGw6
OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgICAgIHN0b3JlMzIocmVnVDAsIG1l
dGFkYXRhLm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7Cisg
ICAgICAgIHN0b3JlMzIocmVnVDAsIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9m
aWxlLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGRvbmUubGluayh0
aGlzKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cAppbmRleCBiNDJlOTk3YWFiNjNkYmIxNTJkYWUyNDJkN2I5NGYwZTM0ZTkzNjk3Li5hZjYwOGYw
MzEwZDE4ZWIyZmJiZTJkZDY4NGIyZTVjZWZkODNiNzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgSklUOjpjb21waWxl
U2V0dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyopCiAgICAgICAgIGVt
aXRMb2FkKHJlZ2lzdGVyT2Zmc2V0ICsgQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGlu
Z1RoaXMoMCksIHJlZ1QwLCByZWdUMSk7CiAgICAgICAgIEp1bXAgZG9uZSA9IGJyYW5jaElmTm90
Q2VsbChyZWdUMCk7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLCByZWdUMSk7Ci0gICAgICAgIHN0b3JlMzIocmVnVDEsIG1ldGFkYXRh
Lm1fYXJyYXlQcm9maWxlLmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisgICAgICAg
IHN0b3JlMzIocmVnVDEsIG1ldGFkYXRhLm1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxlLmFk
ZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CiAgICAgICAgIGRvbmUubGluayh0aGlzKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2Rl
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCmluZGV4IDE4
Y2ViYTZhZDkwYjgwOGM0ZTA0ZmZkMThmMWNiOTI2NTIyZjQyNjIuLmYwNWRiYTk2NGIyZTY3N2E4
OTNiMWRkMWVmYmFkYzI0YzNlODNhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3Bjb2Rlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGNvZGVzLmNwcApAQCAtNzA3LDcgKzcwNyw3IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNv
bnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgICAgIGJ1ZmZlci0+Zm9y
RWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKICAgICAgICAgICAg
IEpTVmFsdWVSZWdzIHJlZ3MocmVnVDApOwogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdp
c3Rlcihwcm9maWxlLm1fb3BlcmFuZCwgcmVncyk7Ci0gICAgICAgICAgICBlbWl0VmFsdWVQcm9m
aWxpbmdTaXRlKHByb2ZpbGUubV9wcm9maWxlKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUoc3RhdGljX2Nhc3Q8VmFsdWVQcm9maWxlJj4ocHJvZmlsZSkpOwogICAgICAgICB9
KTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC04NzgsMTUgKzg3OCwxMyBA
QCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiB7CiAgICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8
T3BUb1RoaXM+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2Nv
ZGVCbG9jayk7Ci0gICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1
cmUgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlSUQqIGNhY2hl
ZFN0cnVjdHVyZUlEID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CiAgICAgZW1pdEdl
dFZpcnR1YWxSZWdpc3RlcihieXRlY29kZS5tX3NyY0RzdC5vZmZzZXQoKSwgcmVnVDEpOwogCiAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QxKTsKIAogICAgIGFkZFNsb3dDYXNl
KGJyYW5jaElmTm90VHlwZShyZWdUMSwgRmluYWxPYmplY3RUeXBlKSk7Ci0gICAgbG9hZFB0cihj
YWNoZWRTdHJ1Y3R1cmUsIHJlZ1QyKTsKLSAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFpl
cm8sIHJlZ1QyKSk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmVnVDIsIFN0cnVjdHVyZTo6c3RydWN0
dXJlSURPZmZzZXQoKSksIHJlZ1QyKTsKKyAgICBsb2FkMzIoY2FjaGVkU3RydWN0dXJlSUQsIHJl
Z1QyKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2gzMihOb3RFcXVhbCwgQWRkcmVzcyhyZWdUMSwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpKTsKIH0KIApAQCAtOTA4LDggKzkw
Niw4IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBj
dXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RGdW5jdGlvbihj
YWxsZWVSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0aW9uOjpv
ZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNo
VGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0
YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgp
ICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0
b3JSZWcpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGxvYWRQdHIo
QWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpv
ZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKKyAgICBsb2FkUHRyKEFkZHJlc3Mo
cmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZT
dHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CiAKICAgICBsb2FkUHRyKGNhY2hlZEZ1bmN0aW9u
LCBjYWNoZWRGdW5jdGlvblJlZyk7CiAgICAgSnVtcCBoYXNTZWVuTXVsdGlwbGVDYWxsZWVzID0g
YnJhbmNoUHRyKEVxdWFsLCBjYWNoZWRGdW5jdGlvblJlZywgVHJ1c3RlZEltbVB0cihKU0NlbGw6
OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSkpOwpAQCAtOTE5LDkgKzkxNyw3IEBAIHZvaWQg
SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1
Y3Rpb24pCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIGF1dG8gYnV0dGVyZmx5ID0gVHJ1
c3RlZEltbVB0cihudWxscHRyKTsKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1bHRSZWcs
IEpJVEFsbG9jYXRvcjo6dmFyaWFibGUoKSwgYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVSZWcsIGJ1
dHRlcmZseSwgc2NyYXRjaFJlZywgc2xvd0Nhc2VzKTsKLSAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKGNhbGxlZSwgc2NyYXRjaFJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hSZWcs
IEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHNjcmF0Y2hSZWcpOwotICAgIGxvYWQz
MihBZGRyZXNzKHNjcmF0Y2hSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZklubGlu
ZUNhcGFjaXR5KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBsb2FkOChBZGRyZXNzKHN0cnVjdHVyZVJl
ZywgU3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CiAgICAg
ZW1pdEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAg
YWRkU2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBlbWl0UHV0VmlydHVhbFJlZ2lzdGVyKGJ5dGVj
b2RlLm1fZHN0Lm9mZnNldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3Bjb2RlczMyXzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2RlczMyXzY0LmNwcAppbmRleCAyNWE5YzhmMzUwYWRjM2U2OTQ0MGRhY2EzNGQ4MjQyMmVlNGYx
ODJjLi45N2FlMmZiZTViMmYzNzU5NTQ0NDhkZTg1YTgxMTE4ZGVkODlkMDNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCkBAIC04OTksNyArODk5
LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5k
T3BlcmFuZCYgcHJvZmlsZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMSwg
cmVnVDApOwogICAgICAgICAgICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rlcihwcm9maWxlLm1fb3Bl
cmFuZCwgcmVncyk7Ci0gICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHByb2ZpbGUu
bV9wcm9maWxlKTsKKyAgICAgICAgICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocHJvZmlsZSk7
CiAgICAgICAgIH0pOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKQEAgLTEwMjAs
OCArMTAyMCw4IEBAIHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0
aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RGdW5j
dGlvbihjYWxsZWVSZWcpKTsKICAgICBsb2FkUHRyKEFkZHJlc3MoY2FsbGVlUmVnLCBKU0Z1bmN0
aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YVJlZyk7CiAgICAgYWRkU2xvd0Nhc2Uo
YnJhbmNoVGVzdFB0cihaZXJvLCByYXJlRGF0YVJlZykpOwotICAgIGxvYWQzMihBZGRyZXNzKHJh
cmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFs
bG9jYXRvclJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CisgICAgbG9h
ZDMyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlw
ZTo6b2Zmc2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7CisgICAgbG9hZFB0cihBZGRy
ZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRp
b25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNl
dE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOwogCiAgICAgbG9hZFB0cihjYWNoZWRGdW5j
dGlvbiwgY2FjaGVkRnVuY3Rpb25SZWcpOwogICAgIEp1bXAgaGFzU2Vlbk11bHRpcGxlQ2FsbGVl
cyA9IGJyYW5jaFB0cihFcXVhbCwgY2FjaGVkRnVuY3Rpb25SZWcsIFRydXN0ZWRJbW1QdHIoSlND
ZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpKTsKQEAgLTEwMzEsOSArMTAzMSw3IEBA
IHZvaWQgSklUOjplbWl0X29wX2NyZWF0ZV90aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgSnVtcExpc3Qgc2xvd0Nhc2VzOwogICAgIGF1dG8gYnV0dGVyZmx5
ID0gVHJ1c3RlZEltbVB0cihudWxscHRyKTsKICAgICBlbWl0QWxsb2NhdGVKU09iamVjdChyZXN1
bHRSZWcsIEpJVEFsbG9jYXRvcjo6dmFyaWFibGUoKSwgYWxsb2NhdG9yUmVnLCBzdHJ1Y3R1cmVS
ZWcsIGJ1dHRlcmZseSwgc2NyYXRjaFJlZywgc2xvd0Nhc2VzKTsKLSAgICBlbWl0TG9hZFBheWxv
YWQoY2FsbGVlLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3Moc2NyYXRjaFJlZywg
SlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgc2NyYXRjaFJlZyk7Ci0gICAgbG9hZDMy
KEFkZHJlc3Moc2NyYXRjaFJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5l
Q2FwYWNpdHkoKSksIHNjcmF0Y2hSZWcpOworICAgIGxvYWQ4KEFkZHJlc3Moc3RydWN0dXJlUmVn
LCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBzY3JhdGNoUmVnKTsKICAgICBl
bWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBzY3JhdGNoUmVnKTsKICAgICBh
ZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRTdG9yZUNlbGwoYnl0ZWNvZGUubV9kc3Qu
b2Zmc2V0KCksIHJlc3VsdFJlZyk7CkBAIC0xMDQzLDcgKzEwNDEsNyBAQCB2b2lkIEpJVDo6ZW1p
dF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiB7CiAg
ICAgYXV0byBieXRlY29kZSA9IGN1cnJlbnRJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCk7CiAg
ICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShtX2NvZGVCbG9jayk7Ci0gICAg
V3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmU+KiBjYWNoZWRTdHJ1Y3R1cmUgPSAmbWV0YWRhdGEu
bV9jYWNoZWRTdHJ1Y3R1cmU7CisgICAgU3RydWN0dXJlSUQqIGNhY2hlZFN0cnVjdHVyZUlEID0g
Jm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CiAgICAgaW50IHRoaXNSZWdpc3RlciA9IGJ5
dGVjb2RlLm1fc3JjRHN0Lm9mZnNldCgpOwogCiAgICAgZW1pdExvYWQodGhpc1JlZ2lzdGVyLCBy
ZWdUMywgcmVnVDIpOwpAQCAtMTA1MSw3ICsxMDQ5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdG9f
dGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dD
YXNlKGJyYW5jaElmTm90Q2VsbChyZWdUMykpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90
VHlwZShyZWdUMiwgRmluYWxPYmplY3RUeXBlKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKHJlZ1Qy
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMCk7Ci0gICAgbG9hZFB0cihjYWNo
ZWRTdHJ1Y3R1cmUsIHJlZ1QyKTsKKyAgICBsb2FkMzIoY2FjaGVkU3RydWN0dXJlSUQsIHJlZ1Qy
KTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hQdHIoTm90RXF1YWwsIHJlZ1QwLCByZWdUMikpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA1
YTAwM2FhZjMwMDMxZmQzNjFkZjQwYjdkZTdhMjZiMjU2ZjhlY2Q4Li4xMmI3OGFhZGY0NTg5ZGQ0
ODNjYzg3OTJkMmQ2Mzg2MzUxOTkwZWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKQEAgLTE2OTUsNyArMTY5NSw3IEBAIGNoYXIqIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVHJ5T1NSRW50ZXJBdENhdGNoQW5kVmFsdWVQcm9maWxlKEV4ZWNTdGF0ZSog
ZXhlYywKICAgICBhdXRvIGJ5dGVjb2RlID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5hdChi
eXRlY29kZUluZGV4KS0+YXM8T3BDYXRjaD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKGNvZGVCbG9jayk7CiAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2go
WyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUu
bV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRS
KHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fYnVja2V0
c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5k
KS5qc1ZhbHVlKCkpOwogICAgIH0pOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCmluZGV4IDUxOWFkN2Fl
YzM2NGFiYTkyNjYwMTRjMmQzZWI0NjJkMjU5YjM3MTMuLjlkNjIxNDgxZjc3NDc0ZWZiODMxYmQ0
ZTVmMWY1ODIyOWUzMzI1NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCkBAIC01ODMsNyArNTgzLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Z2V0X2J5X2lkKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rpb24pCiAgICAgZW1p
dEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKHJlZ1QwLCBiYXNlVlJlZyk7CiAgICAgCiAgICAgaWYg
KCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGggJiYgc2hvdWxkRW1pdFByb2Zp
bGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RF
cXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGUpLCBUcnVzdGVkSW1tMzIoc3Rh
dGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOworICAgICAgICBK
dW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1YWwsIEFic29sdXRlQWRkcmVz
cygmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7CiAgICAgICAgIGVtaXRBcnJh
eVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDEsICZtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKICAgICAgICAgbm90QXJyYXlMZW5n
dGhNb2RlLmxpbmsodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMmU5MGM3MDFkYTFlYzc1YjE4MjJhYTZkN2IzYmU3
Yzc0MjZmMjViNy4uMjU0ZmNkY2RkYWZkNjI0YzA3NTgwMTA3NmM4MDdkODc3N2YxZmU3ZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC03
NDAsMTkgKzc0MCwyNCBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShF
eGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgSW5zdHJ1Y3RpbwogICAgIENvbmN1cnJlbnRK
U0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogCiAgICAgaWYgKHNsb3QuaXNVbnNl
dCgpKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpVbnNldDsKKyAg
ICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdldEJ5SWRNb2RlOjpVbnNldDsK
ICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRNb2RlLnN0cnVjdHVyZUlEID0g
c3RydWN0dXJlLT5pZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VSVChzbG90
LmlzVmFsdWUoKSk7CiAKLSAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6UHJvdG9M
b2FkOworICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6UHJv
dG9Mb2FkOyAvLyBUaGlzIG11c3QgYmUgZmlyc3Qgc2V0LiBJbiA2NGJpdCBhcmNoaXRlY3R1cmUs
IHRoaXMgZmllbGQgaXMgc2hhcmVkIHdpdGggcHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90LgogICAg
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1
Y3R1cmUtPmlkKCk7CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5j
YWNoZWRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9M
b2FkTW9kZS5jYWNoZWRTbG90ID0gc2xvdC5zbG90QmFzZSgpOwogICAgIC8vIFdlIGtub3cgdGhh
dCB0aGlzIHBvaW50ZXIgd2lsbCByZW1haW4gdmFsaWQgYmVjYXVzZSBpdCB3aWxsIGJlIGNsZWFy
ZWQgYnkgZWl0aGVyIGEgd2F0Y2hwb2ludCBmaXJlIG9yCiAgICAgLy8gZHVyaW5nIEdDIHdoZW4g
d2UgY2xlYXIgdGhlIExMSW50IGNhY2hlcy4KICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5w
cm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPSBzbG90LnNsb3RCYXNlKCk7CisKKyAgICBBU1NFUlQo
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkKTsK
KyAgICBBU1NFUlQoIW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNo
aW5nKTsKKyAgICBBU1NFUlQobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5z
dHJ1Y3R1cmVJRCA9PSBzdHJ1Y3R1cmUtPmlkKCkpOworICAgIEFTU0VSVChtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldCA9PSBvZmZzZXQpOworICAgIEFT
U0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPT0g
c2xvdC5zbG90QmFzZSgpKTsKIH0KIAogCkBAIC03NzUsOCArNzgwLDcgQEAgTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJs
ZSgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVyZUlEIG9sZFN0cnVjdHVyZUlE
OwotICAgICAgICAgICAgYXV0byBtb2RlID0gbWV0YWRhdGEubV9tb2RlOwotICAgICAgICAgICAg
c3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLm1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1vZGU6OkRlZmF1bHQ6CiAgICAg
ICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZh
dWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTgwNCwxMiAr
ODA4LDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSh2bSk7CiAgICAg
ICAgIGlmIChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlKSB7
CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcgb3V0IHRoZSBvbGQgY2FjaGUu
Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKKyAg
ICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6RGVm
YXVsdDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0
cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1
bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CiAKICAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIHBy
b3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAgICAgICAgICAgbWV0YWRhdGEu
bV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAgICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0FyZUNhY2hlYWJsZSgpCiAgICAg
ICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVByb3BlcnR5V2F0Y2hwb2ludCgp
KSB7CkBAIC04MjAsMjEgKzgyNCwyMiBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Z2V0X2J5X2lkKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1
bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgICAgICAgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFko
bWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiAoc2xvdC5pc1ZhbHVlKCkgfHwg
c2xvdC5pc1Vuc2V0KCkpKSkgeworICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChzbG90LmlzVmFsdWUo
KSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CiAgICAgICAgICAgICBBU1NFUlQoc2xvdC5zbG90QmFz
ZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEubV9oaXRD
b3VudEZvckxMSW50Q2FjaGluZykpCisgICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKICAgICAgICAgICAgICAgICBzZXR1
cEdldEJ5SWRQcm90b3R5cGVDYWNoZShleGVjLCB2bSwgcGMsIG1ldGFkYXRhLCBiYXNlQ2VsbCwg
c2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmICghTExJTlRfQUxXQVlTX0FD
Q0VTU19TTE9XCiAgICAgICAgICYmIGlzSlNBcnJheShiYXNlVmFsdWUpCiAgICAgICAgICYmIGlk
ZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewotICAgICAgICBtZXRhZGF0YS5tX21v
ZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Ci0gICAgICAgIG5ldyAoJm1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpIEFycmF5UHJvZmlsZShj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKSk7CisgICAgICAgIENvbmN1cnJlbnRKU0xvY2tl
ciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOworICAgICAgICBuZXcgKCZtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVBy
b2ZpbGU7CiAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5h
cnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUuYXNDZWxsKCktPnN0cnVjdHVy
ZSh2bSkpOwogCiAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2
ZXIgaGFwcGVuaW5nLgotICAgICAgICBtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5n
ID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgPSAwOwogICAgIH0KIAogICAgIExMSU5UX1BST0ZJTEVfVkFMVUUocmVzdWx0KTsKQEAg
LTE1MDIsMTIgKzE1MDcsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbgogICAgICAgICAgICAg
ICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAKICAg
ICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNhbGxlckNvZGVCbG9jay0+
bV9sb2NrKTsKLQotICAgICAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkp
Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7Ci0gICAgICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KHZtLCBjYWxsZXJDb2RlQmxvY2ssIGludGVy
bmFsRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxs
ZWUuc2V0KHZtLCBjYWxsZXJDb2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24pOwotICAgICAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAg
ICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGluayh2bSwgY2FsbGVyQ29kZUJsb2NrLCBpbnRlcm5h
bEZ1bmN0aW9uLCBjb2RlUHRyKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYXNzZXJ0
SXNUYWdnZWRXaXRoKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSwgSlNFbnRyeVB0clRhZyk7
CkBAIC0xNTUwLDEyICsxNTUwLDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENh
bGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW4KICAgICAgICAg
Q29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKIAogICAgICAg
ICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNhbGxlckNvZGVCbG9jay0+bV9sb2NrKTsKLSAg
ICAgICAgCi0gICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCi0gICAgICAgICAg
ICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOwotICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5z
ZXQodm0sIGNhbGxlckNvZGVCbG9jaywgY2FsbGVlKTsKLSAgICAgICAgY2FsbExpbmtJbmZvLT5s
YXN0U2VlbkNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgY2FsbGVlKTsKLSAgICAgICAg
Y2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGNhbGxM
aW5rSW5mby0+bGluayh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUsIGNvZGVQdHIpOwogICAg
ICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdD
YWxsKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgfQpAQCAtMTkyOCw3ICsxOTIzLDcgQEAgTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0Y2gpCiAgICAgYXV0byBieXRl
Y29kZSA9IHBjLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUu
bWV0YWRhdGEoZXhlYyk7CiAgICAgbWV0YWRhdGEubV9idWZmZXItPmZvckVhY2goWyZdIChWYWx1
ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Ci0gICAgICAgIHByb2ZpbGUubV9wcm9maWxl
Lm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUu
bV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxlLm1fYnVja2V0c1swXSA9IEpT
VmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVl
KCkpOwogICAgIH0pOwogCiAgICAgTExJTlRfRU5EKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbSBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCmluZGV4IGM3
N2ZiN2UzNmJjZGU1M2VhMzRhZGU3ZTQ4MzkwNmFlYzViZjM2MzIuLmM5NjYxYzg3MzM1MGY2ZDdm
NmIwMTNmZDA3NTQxZTZjZWE5OTEwZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCkBAIC03NDUsNyArNzQ1
LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNp
emUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLAogICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5
cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgbG9hZHAgT3BUb1Ro
aXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgT3BUb1Ro
aXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZUlEW3QyXSwgdDIKICAgICBiaW5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xvdwogICAgIGRpc3BhdGNoKCkK
IApAQCAtMTgzNiw3ICsxODM2LDcgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNs
b3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgZW5k
LCBtZXRhZGF0YSkKIAogICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBsb2FkcCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0NV0sIHQyCisg
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9j
YWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgogICAgICAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93
KQogICAgICAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CiAgICAgICAgIGdldHUoc2l6ZSwg
b3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQpAQCAtMTg0OSw4ICsxODQ5LDggQEAgbWFjcm8gY29t
bW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxs
LCBwcm9sb2d1ZSkKICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9m
ZnNldFt0M10KICAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10K
ICAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0Mywg
dDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcGNv
ZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgcHJlcGFy
ZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVD
b2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRh
cmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50
cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKICAgICAgICAgc2xvd1BhdGhGb3JDYWxsKHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQu
YXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5h
c20KaW5kZXggYzgwNzQzNTg0NTA5Y2ZlZTMwOTkzYTZlYjExMjU1ZDIxMzM1MWM2Mi4uODExOWRh
MmNiZmY3YWI0ODIwMzJiNzJhZDMzN2I1MWFiZmIxOWMzNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KQEAgLTcwMSwx
MCArNzAxLDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1h
Y3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwKICAgICBsb2FkcSBbY2ZyLCB0MCwg
OF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKICAgICBiYm5lcSBK
U0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwotICAgIGxv
YWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKKyAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICBsb2FkcCBP
cFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIKLSAgICBicG5lcSB0
MSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2Fj
aGVkU3RydWN0dXJlSURbdDJdLCB0MgorICAgIGJpbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdwog
ICAgIGRpc3BhdGNoKCkKIAogLm9wVG9UaGlzU2xvdzoKQEAgLTEyODgsNyArMTI4OCw3IEBAIGVu
ZCkKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJZCwgbWFjcm8g
KHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0YWRhdGEodDIs
IHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZVt0Ml0sIHQxCisgICAg
bG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0Ml0sIHQxCiAg
ICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNlbGwoc2l6ZSwg
dDAsIHQzLCAub3BHZXRCeUlkU2xvdykKIApAQCAtMTkxOCw3ICsxOTE4LDcgQEAgbWFjcm8gYXJy
YXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAgICAgbG9hZHEgVGhpc0FyZ3Vt
ZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAuZG9uZQog
ICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQzCi0gICAgc3RvcmVpIHQzLCAl
b3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1
cmVJRFt0NV0KKyAgICBzdG9yZWkgdDMsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1XQogLmRvbmU6
CiBlbmQKIApAQCAtMTkzMSw3ICsxOTMxLDcgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5h
bWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAg
ICAgZW5kLCBtZXRhZGF0YSkKIAogICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAgICBs
b2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0NV0s
IHQyCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0lu
Zm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgogICAgICAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MykKICAgICAgICAgYnFuZXEgdDMsIHQy
LCAub3BDYWxsU2xvdwogICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9hcmd2LCB0
MykKQEAgLTE5NDMsOCArMTk0Myw4IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBz
bG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCiAgICAgICAgIHN0b3JlaSB0
MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMsIHNw
Ci0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQot
ICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdl
dFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0
MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBv
cGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQogCiAgICAgLm9w
Q2FsbFNsb3c6CiAgICAgICAgIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4NTQ0MTg4ODM2ZmU2ODljZDhh
NjdkMmJmZjQzNzI1MjE3M2NmNWJlLi40ZTc4YTQ4ZDZkMTllYjliMDZkM2M5ZWQwNzRlOTU4MTEy
ZDA4YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y3JlYXRlX3RoaXMpCiAgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0V2l0aG91dFdyaXRlQmFy
cmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSk7CiAKICAgICAgICAgc2l6
ZV90IGlubGluZUNhcGFjaXR5ID0gYnl0ZWNvZGUubV9pbmxpbmVDYXBhY2l0eTsKLSAgICAgICAg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIGFsbG9jYXRpb25Qcm9maWxlID0gY29uc3RydWN0b3It
PmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkp
LT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGUqIGFsbG9jYXRpb25Qcm9maWxlID0gY29uc3RydWN0b3ItPmVuc3Vy
ZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNpdHkpLT5vYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZSgpOwogICAgICAgICB0aHJvd1Njb3BlLnJlbGVhc2VBc3NlcnRO
b0V4Y2VwdGlvbigpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFsbG9jYXRpb25Q
cm9maWxlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYywgc3RydWN0dXJlKTsKQEAgLTI3MiwxNiArMjcyLDE3IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90b190aGlzKQogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRh
dGEoZXhlYyk7CiAgICAgSlNWYWx1ZSB2MSA9IEdFVChieXRlY29kZS5tX3NyY0RzdCkuanNWYWx1
ZSgpOwogICAgIGlmICh2MS5pc0NlbGwoKSkgewotICAgICAgICBTdHJ1Y3R1cmUqIG15U3RydWN0
dXJlID0gdjEuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIFN0cnVjdHVyZSogb3Ro
ZXJTdHJ1Y3R1cmUgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5nZXQoKTsKLSAgICAgICAg
aWYgKG15U3RydWN0dXJlICE9IG90aGVyU3RydWN0dXJlKSB7Ci0gICAgICAgICAgICBpZiAob3Ro
ZXJTdHJ1Y3R1cmUpCisgICAgICAgIFN0cnVjdHVyZUlEIG15U3RydWN0dXJlSUQgPSB2MS5hc0Nl
bGwoKS0+c3RydWN0dXJlSUQoKTsKKyAgICAgICAgU3RydWN0dXJlSUQgb3RoZXJTdHJ1Y3R1cmVJ
RCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CisgICAgICAgIGlmIChteVN0cnVjdHVy
ZUlEICE9IG90aGVyU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgIGlmIChvdGhlclN0cnVjdHVy
ZUlEKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29u
ZmxpY3RlZDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlLnNldCh2bSwg
ZXhlYy0+Y29kZUJsb2NrKCksIG15U3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlSUQgPSBteVN0cnVjdHVyZUlEOworICAgICAgICAgICAgdm0uaGVhcC53
cml0ZUJhcnJpZXIoZXhlYy0+Y29kZUJsb2NrKCksIHZtLmdldFN0cnVjdHVyZShteVN0cnVjdHVy
ZUlEKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBtZXRhZGF0YS5tX3RvVGhp
c1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAw
OwogICAgIH0KICAgICAvLyBOb3RlOiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyB2YWx1ZSBwcm9m
aWxpbmcgaGVyZSBvbiB0aGUgc2xvdyBwYXRoLiBUaGUgZmFzdCBwYXRoCiAgICAgLy8ganVzdCBy
ZXR1cm5zIHRoZSBpbnB1dCB0byB0b190aGlzIGlmIHRoZSBzdHJ1Y3R1cmUgY2hlY2sgc3VjY2Vl
ZHMuIElmIHRoZSBzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCBhNmE2ZGYwMGQ0NTQ3ODk4MDE5MDRmZjVlZWNlYTIy
YmRkYzc5MjFjLi4yZWRhMzJiYTM4NTM2MTBkMDFhOTQ1YTZhNDlmNWZhNDA0YzNiMzQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCkBA
IC02Niw3ICs2Niw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJhcmVEYXRhLCBt
X29iamVjdEFsbG9jYXRpb25Qcm9maWxlKTsKICAgICB9CiAKLSAgICBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQorICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuICZtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogICAgIH0KQEAgLTE0NSw3
ICsxNDUsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgLy8KICAgICAvLyBXZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCAxKSBzaW5jZSB0aGlz
IG1lbW9yeSBpcyByYXJlIGFuZCBzbWFsbCBpbiB0b3RhbC4gMikgaXMgdW5mb3J0dW5hdGUgYnV0
IGlzCiAgICAgLy8gcHJvYmFibHkgb3V0d2VpZ2hlZCBieSB0aGUgY29zdCBvZiAzKS4KLSAgICBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlOworICAgIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSBtX29iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdh
dGNocG9pbnQ7CiAgICAgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlIG1faW50ZXJu
YWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOwogICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xz
L0hlYXBWZXJpZmllci5jcHAKaW5kZXggZDc3M2Q4NTVmZmMyZTAxNTQ4ZWNmNmRhYThjZDhkNTU1
OTFjOGM5Ni4uMDVlNDA5OWIxNjRjNmE4YTFkNzEzNzRjZmRjNDViNjJkODM4NjBlOCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKQEAgLTMzMCw3ICsz
MzAsNyBAQCBib29sIEhlYXBWZXJpZmllcjo6dmFsaWRhdGVKU0NlbGwoVk0qIGV4cGVjdGVkVk0s
IEpTQ2VsbCogY2VsbCwgQ2VsbFByb2ZpbGUqIHBybwogICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGpzRHluYW1pY0Nhc3Q8Q29kZUJsb2NrKj4odm0sIGNlbGwpOwogICAgICAgICBpZiAo
VU5MSUtFTFkoY29kZUJsb2NrKSkgewogICAgICAgICAgICAgYm9vbCBzdWNjZXNzID0gdHJ1ZTsK
LSAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9m
aWxlJiB2YWx1ZVByb2ZpbGUpIHsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9yRWFjaFZhbHVl
UHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUsIGJvb2wpIHsKICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgVmFsdWVQcm9maWxlOjp0b3RhbE51bWJl
ck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUodmFsdWVQcm9maWxlLm1fYnVja2V0c1tpXSk7CiAgICAgICAgICAgICAg
ICAgICAgIGlmICghdmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370134</attachid>
            <date>2019-05-17 12:36:17 -0700</date>
            <delta_ts>2019-05-17 12:45:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517123616.patch</filename>
            <type>text/plain</type>
            <size>77214</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5mZTVlZDdlOGUwZWE5NmQ2
YzllZGNlNGVkY2RmZmEzZTVkOTFlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gc2hyaW5rIE1ldGFkYXRhLiBUaGlzIHBhdGNoIGZpcnN0IGZvY3VzIG9uIGxvdyBoYW5naW5n
IGZydWl0czogaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhbmdlIHJlbW92aW5nIE9TUiBleGl0
IEpTVmFsdWUgaW4gVmFsdWVQcm9maWxlLgorICAgICAgICBUaGlzIHBhdGNoIHVzZXMgZmFuY3kg
Yml0IGp1Z2dsaW5nICYgbGV2ZXJhZ2VzIG5pY2UgZGF0YSB0eXBlcyB0byByZWR1Y2UgTWV0YWRh
dGEsIGFzIGZvbGxvd3MuCisKKyAgICAgICAgMS4gVmFsdWVQcm9maWxlIGlzIHJlZHVjZWQgZnJv
bSAzMiB0byAyNC4gSXQgcmVkdWNlcyBNZXRhZGF0YSB1c2luZyBWYWx1ZVByb2ZpbGUuCisgICAg
ICAgIDIuIEFycmF5UHJvZmlsZSBpcyByZWR1Y2VkIGZyb20gMTYgdG8gMTIuIERpdHRvLgorICAg
ICAgICAzLiBPcENhbGw6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA4OCB0byA2NC4KKyAgICAg
ICAgNC4gT3BHZXRCeUlkOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNTYgdG8gNDAuCisgICAg
ICAgIDUuIE9wVG9UaGlzOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNDggdG8gMzIuCisgICAg
ICAgIDYuIE9wTmV3T2JqZWN0OjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gMzIgdG8gMTYuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBnYXRoZXJlZCBkYXRhLCBpdCBzaG91bGQgcmVkdWNl
IDEtMk1CIGluIHN0ZWFkeSBzdGF0ZSBpbiBHbWFpbCwgbXVjaCBtb3JlIGluIHBlYWsgbWVtb3J5
LCB+MSBNQiBpbiB0aGUgc3RhdGUganVzdCBhZnRlciBmdWxsIEdDLgorICAgICAgICBJdCBhbHNv
IGltcHJvdmVzIFJBTWlmaWNhdGlvbiBieSAwLjMlICg2IHJ1bnMpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICBXZSB1c2UgUHJv
dG9Mb2FkJ3MgSlNPYmplY3QncyBoaWdoIGJpdHMgdG8gZW1iZWQgaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgYW5kIG1vZGUsIHNpbmNlIHRoZXkKKyAgICAgICAgYXJlIGFsd2F5cyB6ZXJvIGZvciBQ
cm90b0xvYWQgbW9kZS4KKworICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxM
aW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgSW4gTExJbnRDYWxsTGlua0luZm8sIHdlIGFsd2F5cyBzZXQg
dGhlIHNhbWUgdmFsdWUgdG8gbGFzdFNlZW5DYWxsZWUgYW5kIGNhbGxlZS4gQnV0IGxhdGVyLCBj
YWxsZWUgY2FuIGJlIGNsZWFyZWQuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgd2UgY2FuIHJlcHJl
c2VudCB0aGVtIGluIG9uZSB2YWx1ZSArIGNsZWFyZWQgZmxhZy4gV2UgZW5jb2RlIHRoaXMgZmxh
ZyBpbnRvIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBjYWxsZWUgY2VsbCBzbworICAgICAgICB0aGF0
IHdlIGNhbiBtYWtlIHRoZW0gb25lIHBvaW50ZXIuIFdlIGFsc28gdXNlIFBhY2tlZFJhd1NlbnRp
bmVsTm9kZSB0byBnZXQgc29tZSBzcGFjZSwgYW5kIGVtYmVkIEFycmF5UHJvZmlsZSBpbnRvIHRo
aXMgc3BhY2UKKyAgICAgICAgdG8gZ2V0IGZ1cnRoZXIgbWVtb3J5IHJlZHVjdGlvbi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpidWZmZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6b2Zmc2V0T2ZBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpjbGVhcik6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpwcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2Fw
YWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5saW5lQ2FwYWNpdHkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46Omlu
aXRpYWxpemVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICBPcE5ld09iamVjdCdzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBwcm90b3R5cGUuIFNvIHdlIGhhdmUg
dHdvIHZlcnNpb25zIG5vdywgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgYW5kIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZQorICAgICAgICB0byBjdXQgb25lIHBvaW50ZXIuIFdl
IGFsc28gcmVtb3ZlIGlubGluZSBjYXBhY2l0eSBzaW5jZSB0aGlzIGNhbiBiZSByZXRyaWV2ZWQg
ZnJvbSBTdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRv
dGFsTnVtYmVyT2ZTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6aXNTYW1wbGVkQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVBy
b2ZpbGVCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBp
cyBubyBsb25nZXIgdXNlZC4gQW5kIHNhbXBsZSBjb3VudCBpcyBub3QgdXNlZCBlZmZlY3RpdmVs
eS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiB0
b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlk
YXRlSlNDZWxsKToKKwogMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2lu
dGVycyBpbiBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCmluZGV4IGMwMGFlZjIxYjZlYmI2MTllOTFjNzQ2YWY0ZmIwOWM1ODRmZDY2
YmIuLjNlMTUwYTAxMjM5NmIxMjgyNDUyOGE1ZTlmMmI5ODM3ZThjN2RlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0zMywxMCAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLWNvbnN0
IGNoYXIqIGNvbnN0IEFycmF5UHJvZmlsZTo6c190eXBlTmFtZSA9ICJBcnJheVByb2ZpbGUiOwot
I2VuZGlmCi0KIC8vIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBvcmRlciBvZiBUeXBlZEFycmF5VHlw
ZS4KIGNvbnN0IEFycmF5TW9kZXMgdHlwZWRBcnJheU1vZGVzW051bWJlck9mVHlwZWRBcnJheVR5
cGVzRXhjbHVkaW5nRGF0YVZpZXddID0gewogICAgIEludDhBcnJheU1vZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0
MmE1NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4
YzBlOGRlMjM3YjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFy
cmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAg
IEFycmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFy
cmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjM4LDE2ICsy
MjksMTEgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKICAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSA9PSBzX3R5cGVOYW1lOyB9Ci0jZW5kaWYKLQogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsg
Ly8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVj
aWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBp
dCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2lj
YWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdl
KSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1w
bGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwpAQCAtMjU1LDEzICsyNDEs
NyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OwotCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVOYW1lOwotICAg
IGNvbnN0IGNoYXIqIG1fdHlwZU5hbWUgeyBzX3R5cGVOYW1lIH07Ci0jZW5kaWYKIH07Ci0KLXR5
cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgND4gQXJyYXlQcm9maWxlVmVjdG9y
Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMDY5NWEyNTA3YjYyMzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uY2Rl
ZTU2OWM4ZDAyMGIwZDc5M2NlODRhZTg4YWM1ZGJlMWI1MTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAK
ICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
KyAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNT
dGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KQEAgLTQxNCw4ICs0MTQsNiBAQAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAg
aGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CkBAIC03MDYsNyArNzA0LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBA
IC03MTksNyArNzE2LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxM
aW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03MzIs
NyArNzI4LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03ODcsNyArNzgy
LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uNzlmMDZkYzMyNTNhMjUxYzIyOWQ0MjUwMWE3MjMxNDdmNzQzYmQ0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQg
PyBudWxscHRyIDogdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTElu
dCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0
YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZvKFsmXShM
TEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8uY2FsbGVlLmdl
dCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2VkKCkgJiYgIXZtLmhlYXAu
aXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTElu
dCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLnVu
bGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5rSW5mby5sYXN0U2VlbkNh
bGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0
KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01h
cmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAgICAgICAgICBjYWxsTGlu
a0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQogCkBAIC0yNTc1LDE3ICsy
NTY4LDI0IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0CiB7CiAgICAgYXV0byBpbnN0cnVjdGlv
biA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBzd2l0Y2ggKGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwKKyNkZWZpbmUgQ0FTRTEo
T3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAogICAgICAgICByZXR1cm4gJmluc3RydWN0
aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmlsZTsKIAotICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ0FTRSkKLSN1bmRlZiBDQVNFCisjZGVmaW5l
IENBU0UyKE9wKSBcCisgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKKyAgICAgICAgcmV0dXJuICZp
bnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9jYWxsTGlua0luZm8ubV9hcnJh
eVByb2ZpbGU7CisKKyAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENBU0Ux
KQorICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKENBU0UyKQor
CisjdW5kZWYgQ0FTRTEKKyN1bmRlZiBDQVNFMgogCiAgICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29k
ZUlEOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlk
PigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwot
ICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkK
KyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yNjMzLDE2ICsyNjMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9u
c0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyCiAgICAgbnVtYmVy
T2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJ
blByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVy
T2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2Zp
bGVzIGFyZSBmdWxsLgogCi0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxl
JiBwcm9maWxlKSB7CisgICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiBw
cm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9
IHByb2ZpbGUudG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChW
YWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKICAgICAgICAgaWYgKG51bVNhbXBs
ZXMgPiBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cykKICAgICAgICAgICAgIG51bVNhbXBs
ZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBwcm9m
aWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0LgogICAg
ICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7Ci0gICAgICAgIGlm
IChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAgICAgIGlmIChpc0FyZ3VtZW50
KSB7CiAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLm51
bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUubV9wcmVkaWN0aW9uICE9IFNwZWNOb25lKQorICAg
ICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJl
Zm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
Kys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAg
ICAgfSk7CkBAIC0yNjUwLDcgKzI2NTEsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJl
ZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25BcgogICAg
IGlmIChhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBwcm9maWxlQnVja2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9maWxlcykgewogICAgICAg
ICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yODAwLDEyICsyODAxLDExIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2Fs
QmluZGluZ1VwZGF0ZSgpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogewog
ICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKLSAgICBmb3JF
YWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkgewotICAgICAgICBpZiAo
cHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewotICAgICAgICAgICAgQVNTRVJUKHByb2Zp
bGUubV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAgYXJn
ID0gJXU6ICIsIGkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGZvckVhY2hWYWx1ZVBy
b2ZpbGUoW10oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKKyAgICAg
ICAgaWYgKGlzQXJndW1lbnQpCisgICAgICAgICAgICBkYXRhTG9nRigiICAgYXJnOiAiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjOiAiKTsKICAgICAgICAgaWYg
KCFwcm9maWxlLm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUubV9wcmVkaWN0aW9uID09IFNw
ZWNOb25lKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiPGVtcHR5PlxuIik7CiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCBhOTNjMzZmYjkxOGYzYjMwY2FiMGM3OThlNjFlNzBjYTU5MWIxOGNmLi5mNWRiZmVjNjk0
YmQxNDcyYjk5YWM1ZjBlYjMxZDBkMGFkMGNmZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00NzgsNyArNDc4LDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBBU1NFUlQodm0oKS0+Y2FuVXNlSklU
KCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlvdXMgSklUIGNvbXBpbGVy
cyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxl
cyBiZWZvcmUgY2FsbGluZyB0aGlzLgogICAgICAgICBWYWx1ZVByb2ZpbGUmIHJlc3VsdCA9IG1f
YXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIApAQCAtOTc0LDcgKzk3Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIFZNKiBtX3ZtOwogCiAgICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2lu
dGVyIHsgbnVsbHB0ciB9OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5m
bywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJ
bnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdMTEludENhbGxz
OwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5SWRXYXRjaHBvaW50TWFw
OwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCmluZGV4
IGYwMGIzOTc4NzMyZTRmNjdkZDJlNTU2MTA0NzdmZGMyZjdhNWNhY2IuLjIyZTc2YjE4NWViOWVi
YTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzUsMTEgKzM1LDExIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmls
ZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCi0gICAgICAgIGZ1bmModmFsdWVQ
cm9maWxlRm9yQXJndW1lbnQoaSkpOworICAgICAgICBmdW5jKHZhbHVlUHJvZmlsZUZvckFyZ3Vt
ZW50KGkpLCB0cnVlKTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9f
b3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZh
bHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShW
SVNJVCkKIApAQCAtNTMsMTYgKzUzLDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5
TGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0g
R2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CiAgICAgICAgIH0p
OwogCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyNkZWZpbmUgVklTSVQxKF9fb3ApIFwKICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCi0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRI
X0FSUkFZX1BST0ZJTEUoVklTSVQpCisjZGVmaW5lIFZJU0lUMihfX29wKSBcCisgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEu
bV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKIAotI3VuZGVmIFZJU0lUCisgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQxKQorICAgICAgICBG
T1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhWSVNJVDIpCisKKyN1bmRl
ZiBWSVNJVDEKKyN1bmRlZiBWSVNJVDIKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBkYzQzNGU2YzRiN2ZkNGVk
ODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi41OWM0M2ZlYzQwNmU5ZGI5NWY2MzBiMWE3OGE1MzBm
NWNlMTY2YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsNzkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVt
IGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0gICAgRGVmYXVsdCA9IDAsCi0gICAgVW5z
ZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAgUHJvdG9Mb2FkID0gMCwgLy8gVGhpcyBt
dXN0IGJlIHplcm8gdG8gcmV1c2UgdGhlIGhpZ2hlciBiaXRzIG9mIHRoZSBwb2ludGVyIGFzIHRo
aXMgUHJvdG9Mb2FkIG1vZGUuCisgICAgRGVmYXVsdCA9IDEsCisgICAgVW5zZXQgPSAyLAogICAg
IEFycmF5TGVuZ3RoID0gMywKIH07CiAKKy8vIEluIDY0Yml0IExpdHRsZSBlbmRpYW4gYXJjaGl0
ZWN0dXJlLCB0aGlzIHVuaW9uIHNoYXJlcyBQcm90b0xvYWQncyBKU09iamVjdCogY2FjaGVkU2xv
dCB3aXRoICJoaWdDb3VudEZvckxMSW50Q2FjaGluZyIgYW5kICJtb2RlIi4KKy8vIFRoaXMgaXMg
cG9zc2libGUgYmVjYXVzZSB0aGVzZSB2YWx1ZXMgbXVzdCBiZSB6ZXJvIGlmIHdlIHVzZSBQcm90
b0xvYWQgbW9kZS4KKyNpZiBDUFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkKIHVu
aW9uIEdldEJ5SWRNb2RlTWV0YWRhdGEgeworI2Vsc2UKK3N0cnVjdCBHZXRCeUlkTW9kZU1ldGFk
YXRhIHsKKyNlbmRpZgogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGEoKQotICAgIHsgfQorICAgIHsK
KyAgICAgICAgZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAwOworICAgICAgICBkZWZhdWx0TW9k
ZS5jYWNoZWRPZmZzZXQgPSAwOworICAgICAgICBkZWZhdWx0TW9kZS5wYWRkaW5nMSA9IDA7Cisg
ICAgICAgIG1vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKKyAgICAgICAgaGl0Q291bnRGb3JM
TEludENhY2hpbmcgPSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygp
OworICAgIH0KIAogICAgIHN0cnVjdCBEZWZhdWx0IHsKICAgICAgICAgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQ7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICB9IGRl
ZmF1bHRNb2RlOworICAgICAgICB1bnNpZ25lZCBwYWRkaW5nMTsKKyAgICB9OworICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKERlZmF1bHQpID09IDEyKTsKIAogICAgIHN0cnVjdCBVbnNldCB7CiAg
ICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwotICAgIH0gdW5zZXRNb2RlOworICAgICAg
ICB1bnNpZ25lZCBwYWRkaW5nMTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZzI7CisgICAgfTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbnNldCkgPT0gMTIpOworCisgICAgc3RydWN0IEFy
cmF5TGVuZ3RoIHsKKyAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKKyAgICB9Owor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5TGVuZ3RoKSA9PSAxMik7CiAKICAgICBzdHJ1
Y3QgUHJvdG9Mb2FkIHsKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKICAgICAgICAgSlNPYmplY3QqIGNhY2hlZFNs
b3Q7Ci0gICAgfSBwcm90b0xvYWRNb2RlOworICAgIH07CiAKLSAgICBzdHJ1Y3QgQXJyYXlMZW5n
dGggewotICAgICAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotICAgIH0gYXJyYXlMZW5n
dGhNb2RlOworI2lmIENQVShMSVRUTEVfRU5ESUFOKSAmJiBDUFUoQUREUkVTUzY0KQorICAgIHN0
cnVjdCB7CisgICAgICAgIHVpbnQzMl90IHBhZGRpbmcxOworICAgICAgICB1aW50MzJfdCBwYWRk
aW5nMjsKKyAgICAgICAgdWludDMyX3QgcGFkZGluZzM7CisgICAgICAgIHVpbnQxNl90IHBhZGRp
bmc0OworICAgICAgICBHZXRCeUlkTW9kZSBtb2RlOworICAgICAgICB1aW50OF90IGhpdENvdW50
Rm9yTExJbnRDYWNoaW5nOyAvLyBUaGlzIG11c3QgYmUgemVybyB3aGVuIHdlIHVzZSBQcm90b0xv
YWQgbW9kZS4KKyAgICB9OworICAgIERlZmF1bHQgZGVmYXVsdE1vZGU7CisgICAgVW5zZXQgdW5z
ZXRNb2RlOworICAgIEFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICBQcm90b0xvYWQg
cHJvdG9Mb2FkTW9kZTsKKyNlbHNlCisgICAgdW5pb24geworICAgICAgICBEZWZhdWx0IGRlZmF1
bHRNb2RlOworICAgICAgICBVbnNldCB1bnNldE1vZGU7CisgICAgICAgIEFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKKyAgICAgICAgUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CisgICAgfTsK
KyAgICBHZXRCeUlkTW9kZSBtb2RlOworICAgIHVpbnQ4X3QgaGl0Q291bnRGb3JMTEludENhY2hp
bmc7CisjZW5kaWYKIH07CisjaWYgQ1BVKExJVFRMRV9FTkRJQU4pICYmIENQVShBRERSRVNTNjQp
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7CisjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggNmU0ZThiZmRiZTE3NWMwNmJmOTgyZTgzNDBl
YzY0MmMzOWMyMDE4Ni4uZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4M2RkZWFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cApAQCAtNjQsNyArNjQsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZAogICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEocHJvZmls
ZWRCbG9jayk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGp1c3QgYmFpbCBpZiB3
ZSBzZWUgYSBnZXRfYnlfaWRfcHJvdG9fbG9hZC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAzOQotICAgICAgICBpZiAobWV0YWRhdGEubV9t
b2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICBpZiAobWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKICAgICAgICAgc3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oCmluZGV4IDg0YjVjMTFjNTg2NjVkMzJiYmQ1YzIyMGQ5YTkxODM4Mjg0
YTFlMTYuLjdjMjdjZGY2NmU3YTliZGRhYTJmNmFiZWEyNjI4ZmNiNDY5MzlmNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCkBA
IC0zNCwxMCArMzQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBJbnN0cnVjdGlvbjsK
IAotc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2Rl
PExMSW50Q2FsbExpbmtJbmZvPiB7Ci0gICAgTExJbnRDYWxsTGlua0luZm8oKQotICAgIHsKLSAg
ICB9CitjbGFzcyBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8TExJbnRDYWxsTGlua0luZm8+IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgdW5saW5r
ZWRCaXQgPSAweDE7CisKKyAgICBMTEludENhbGxMaW5rSW5mbygpID0gZGVmYXVsdDsKICAgICAK
ICAgICB+TExJbnRDYWxsTGlua0luZm8oKQogICAgIHsKQEAgLTQ1LDE5ICs0OCw0OSBAQCBzdHJ1
Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRD
YWxsTGlua0luZm8+IHsKICAgICAgICAgICAgIHJlbW92ZSgpOwogICAgIH0KICAgICAKLSAgICBi
b29sIGlzTGlua2VkKCkgeyByZXR1cm4gISFjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkg
Y29uc3QgeyByZXR1cm4gIShtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIHVu
bGlua2VkQml0KTsgfQogICAgIAorCisgICAgdm9pZCBsaW5rKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IGNvZGVQdHIpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJl
bW92ZSgpOworICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSk7CisgICAgICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKG93bmVyLCBjYWxsZWUpOworICAgICAgICBtX21hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICB9CisKICAgICB2b2lkIHVubGluaygpCiAgICAgewotICAgICAgICBjYWxsZWUuY2xl
YXIoKTsKLSAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgLy8gTWFrZSBsaW5rIGludmFsaWRhdGVkLiBJdCB3
b3JrcyBiZWNhdXNlIExMSW50IHRlc3RzIHRoZSBnaXZlbiBjYWxsZWUgd2l0aCB0aGlzIHBvaW50
ZXIuIEJ1dCBpdCBpcyBzdGlsbCB2YWxpZCBhcyBsYXN0U2VlbkNhbGxlZSEKKyAgICAgICAgbV9j
YWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgfD0gdW5saW5rZWRCaXQ7CisgICAgICAg
IG1fbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4oKTsKICAgICAgICAgaWYgKGlzT25MaXN0KCkpCiAgICAgICAgICAgICByZW1vdmUoKTsKICAg
ICB9Ci0gICAgCi0gICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjYWxsZWU7Ci0gICAgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PiBsYXN0U2VlbkNhbGxlZTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gbWFjaGluZUNvZGVUYXJnZXQ7CisKKyAgICBKU09iamVjdCogY2Fs
bGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNMaW5rZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTT2JqZWN0Kj4o
bV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQpOworICAgIH0KKworICAgIEpTT2Jq
ZWN0KiBsYXN0U2VlbkNhbGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PEpTT2JqZWN0Kj4obV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgJiB+
dW5saW5rZWRCaXQpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJMYXN0U2VlbkNhbGxlZSgpCisg
ICAgeworICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCA9IHVubGlu
a2VkQml0OworICAgIH0KKworICAgIEFycmF5UHJvZmlsZSBtX2FycmF5UHJvZmlsZTsKKworcHJp
dmF0ZToKKyAgICB1aW50cHRyX3QgbV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQg
eyB1bmxpbmtlZEJpdCB9OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBtX21hY2hpbmVDb2RlVGFyZ2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmlu
ZGV4IDBlZjZhNTVjOWM3MTk2MDNmMWEyZTM4YjU4MDU2NmYwYTI0NjdiZTEuLjU3YWJiOWE0YzAz
ZjJhOWZmNTFlY2VkY2RiZjIxNGU4NGE5NDA4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC02NSw3ICs2NSw4IEBA
IHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJl
SW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAKIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6
TWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2Rl
OjpEZWZhdWx0OworICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCisg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0Owog
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7
CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuaAppbmRleCA5YzNiMDY4NDI3MDM0YjA4OWJhMDk4ZTgyMmZmZDBl
MTZlZjM1MDk2Li44ZjYwZWIwZjQwYWMzYjE2ZDZhYjAzZGFkZGM2MjI4ODljZWI0YzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuaApAQCAtMTI5LDE3ICsxMjksMTggQEAgc3RydWN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlIDogcHVibGljIE1pbmltYWxWYWx1ZVByb2ZpbGUgewogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShjb25zdCBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUtleSYga2V5KQotICAgICAgICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoa2V5LmJ5dGVj
b2RlT2Zmc2V0KCkpCi0gICAgICAgICwgbV9vcGVyYW5kKGtleS5vcGVyYW5kKCkpCisgICAgICAg
IDogTWluaW1hbFZhbHVlUHJvZmlsZSgpCisgICAgICAgICwgbV9rZXkoa2V5KQogICAgIHsKICAg
ICB9CiAgICAgCiAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2J5dGVjb2Rl
T2Zmc2V0LCBtX29wZXJhbmQpOworICAgICAgICByZXR1cm4gbV9rZXk7CiAgICAgfQogICAgIAog
ICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkgbV9rZXk7CiAgICAgCiAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUsIDg+IExpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKaW5kZXggYTVkNDEyMWIxZDQxZDE2MWJmMjY1NDJlMDky
ODZjZmJkOTkzOTViOC4uOTU0ZDBiYTE2ZDc4MjEwMzk3YmNmZmY5NDg2ODk4M2JhMjAyYzQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCkBA
IC04OCwxMSArODgsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKICAgICAgICAgcmV0dXJuIHJl
ZkNvdW50KCkgPT0gMTsKICAgICB9CiAKLSAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCogYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpPZmZzZXQqPih0aGlzKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgTWV0
YWRhdGFUYWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmKTsKIApAQCAtMTAxLDYgKzk2LDExIEBA
IGNsYXNzIE1ldGFkYXRhVGFibGUgewogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKj4oKGJpdHdpc2VfY2FzdDx1aW50OF90Kj4o
dGhpcykgLSBzaXplb2YoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSkpKTsKICAg
ICB9CiAKKyAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCogYnVmZmVyKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZz
ZXQqPih0aGlzKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldEltcGwo
dW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KHRoaXMpICsgYnVmZmVyKClbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IGE3MDc1M2E3Yjk5NjRk
YzhjNWFmNjE4M2YzODAyZTA1NjRlNWRlOGMuLmY1Njc5YzkzZTVjZTBkNGM1YmIxNDhhZTM1Yzcy
OGU1MzIzMzMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0zNSwxNyArMzUsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGE7CiAKLWNsYXNzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+CitjbGFzcyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9hbGxv
Y2F0b3IpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9zdHJ1Y3R1cmUp
OyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZklubGluZUNhcGFjaXR5KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2lubGluZUNhcGFj
aXR5KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZBbGxvY2F0b3IoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlLCBtX2FsbG9jYXRv
cik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZSwgbV9zdHJ1Y3R1cmUp
OyB9CiAKLSAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCi0gICAgICAgIDogbV9pbmxpbmVD
YXBhY2l0eSgwKQotICAgIHsKLSAgICB9CisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
KCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7
IH0KIApAQCAtNTgsMzcgKzU1LDc0IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIHsK
ICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiAgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBt
X2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOworICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOwor
ICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOworICAgIH0KKworICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICB2aXNpdG9yLmFwcGVuZCht
X3N0cnVjdHVyZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVm
YXVsdFByb3BlcnR5Q291bnQoVk0mLCBKU09iamVjdCogcHJvdG90eXBlKTsKKworICAgIEFsbG9j
YXRvciBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZv
ciBnZW5lcmF0ZWQgY29kZS4KKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVy
ZTsKK307CisKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIDogcHVibGljIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT4geworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU+OworCisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSA9IGRlZmF1bHQ7
CisKKyAgICB1c2luZyBCYXNlOjpjbGVhcjsKKyAgICB1c2luZyBCYXNlOjp2aXNpdEFnZ3JlZ2F0
ZTsKKworICAgIHZvaWQgc2V0UHJvdG90eXBlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqKSB7IH0K
K307CisKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSA6IHB1Ymxp
YyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRo
UHJvdG90eXBlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU+OworCisgICAg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKCkgPSBkZWZhdWx0OworCiAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSgpCiAgICAgewogICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gbV9wcm90b3R5cGUuZ2V0KCk7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAg
ICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KLSAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSgpIHsgcmV0dXJuIG1faW5saW5lQ2FwYWNpdHk7IH0KLQogCiAgICAgdm9pZCBjbGVhcigpCiAg
ICAgewotICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOwotICAgICAgICBtX3N0cnVj
dHVyZS5jbGVhcigpOworICAgICAgICBCYXNlOjpjbGVhcigpOwogICAgICAgICBtX3Byb3RvdHlw
ZS5jbGVhcigpOwotICAgICAgICBtX2lubGluZUNhcGFjaXR5ID0gMDsKICAgICAgICAgQVNTRVJU
KGlzTnVsbCgpKTsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQobV9zdHJ1Y3R1cmUpOwor
ICAgICAgICBCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgdmlzaXRvci5h
cHBlbmQobV9wcm90b3R5cGUpOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBwb3Nz
aWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiwgSlNPYmplY3QqIHByb3RvdHlwZSk7CisgICAg
dm9pZCBzZXRQcm90b3R5cGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogb2JqZWN0
KQorICAgIHsKKyAgICAgICAgbV9wcm90b3R5cGUuc2V0KHZtLCBvd25lciwgb2JqZWN0KTsKKyAg
ICB9CiAKLSAgICBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7IC8vIFByZWNvbXB1dGVkIHRvIG1ha2Ug
dGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVkIGNvZGUuCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJ1Y3R1cmU7Citwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9wcm90b3R5cGU7Ci0gICAgdW5zaWduZWQgbV9pbmxpbmVDYXBhY2l0eTsKIH07CiAKKworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaAppbmRleCA0OTk5
MTIxYjE2NjA2NDNjODU5N2UzMjBhMGE2MjVkZGMyYzVkNjgyLi5mMTFjNGNjNGY1ZjQzYWE2Zjcz
NDc4NTQ0MGFkZjdhMGJlODE4OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCkBA
IC0zMSwxMiArMzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9p
ZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90
eXBlLCB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1
Y3RvciwgRnVuY3Rpb25SYXJlRGF0YSogZnVuY3Rpb25SYXJlRGF0YSkKK3RlbXBsYXRlPHR5cGVu
YW1lIERlcml2ZWQ+CitBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVk
IGluZmVycmVkSW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBGdW5jdGlv
blJhcmVEYXRhKiBmdW5jdGlvblJhcmVEYXRhKQogewogICAgIEFTU0VSVCghbV9hbGxvY2F0b3Ip
OwogICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUpOwotICAgIEFTU0VSVCghbV9wcm90b3R5cGUpOwot
ICAgIEFTU0VSVCghbV9pbmxpbmVDYXBhY2l0eSk7CiAKICAgICAvLyBGSVhNRTogVGVhY2ggY3Jl
YXRlX3RoaXMncyBmYXN0IHBhdGggaG93IHRvIGFsbG9jYXRlIHBvbHkKICAgICAvLyBwcm90byBv
YmplY3RzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTE3CkBA
IC01Niw4ICs1NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEZpbmFsT2JqZWN0VHlw
ZSk7CiAgICAgICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOwogICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIG1fcHJv
dG90eXBlLnNldCh2bSwgb3duZXIsIHByb3RvdHlwZSk7Ci0gICAgICAgICAgICBtX2lubGluZUNh
cGFjaXR5ID0gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8RGVyaXZlZCo+KHRoaXMpLT5zZXRQcm90b3R5cGUodm0sIG93bmVyLCBwcm90b3R5cGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzOCwxMSArMTM2LDExIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5pdGlhbGl6ZVBy
b2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKIAog
ICAgIG1fc3RydWN0dXJlLnNldCh2bSwgb3duZXIsIHN0cnVjdHVyZSk7Ci0gICAgbV9wcm90b3R5
cGUuc2V0KHZtLCBvd25lciwgcHJvdG90eXBlKTsKLSAgICBtX2lubGluZUNhcGFjaXR5ID0gaW5s
aW5lQ2FwYWNpdHk7CisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KHRoaXMpLT5zZXRQcm90b3R5
cGUodm0sIG93bmVyLCBwcm90b3R5cGUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHVuc2lnbmVkIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiB2
bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+CitBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6
cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChWTSYgdm0sIEpTT2JqZWN0KiBwcm90b3R5cGUp
CiB7CiAgICAgaWYgKHByb3RvdHlwZSA9PSBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSktPm9i
amVjdFByb3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAppbmRleCA4YWM2MDNlM2NjNWY3YjE5MzU0NGJiMGNmZjA4NDhkZGIy
MjA3NGNlLi40NDI3ZGQ5OGE0MDcxNmY5ZTM4YzQ2OWU3MmNmMGI2MGU5Y2M1OTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMTEsMTAgKzExMSw2IEBAIGV4
dGVybiBjb25zdCB1bnNpZ25lZCBvcGNvZGVMZW5ndGhzW107CiAgICAgbWFjcm8oT3BUYWlsQ2Fs
bEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdFZhcmFyZ3MpIFwKICAg
ICBtYWNybyhPcEdldEJ5VmFsKSBcCi0gICAgbWFjcm8oT3BDYWxsKSBcCi0gICAgbWFjcm8oT3BU
YWlsQ2FsbCkgXAotICAgIG1hY3JvKE9wQ2FsbEV2YWwpIFwKLSAgICBtYWNybyhPcENvbnN0cnVj
dCkgXAogICAgIG1hY3JvKE9wSW5CeVZhbCkgXAogICAgIG1hY3JvKE9wUHV0QnlWYWwpIFwKICAg
ICBtYWNybyhPcFB1dEJ5VmFsRGlyZWN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgKaW5kZXggZmEwZDNiMDdhM2M0NDZiZDFhMDAzMGU1MTI0MTg0
ZTNiNDRmYWU5NS4uNDg4M2I0YjNkMjFiYmZjOGVkNjZjZmI5NDc1OTBkNzA5NWFiNjFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAtNDQs
MTQgKzQ0LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB0b3RhbE51bWJlck9mQnVja2V0cyA9IG51bWJlck9mQnVja2V0cyArIG51bWJlck9m
U3BlY0ZhaWxCdWNrZXRzOwogICAgIAogICAgIFZhbHVlUHJvZmlsZUJhc2UoKQotICAgICAgICA6
IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkKLSAgICAgICAgICAgIG1fYnVja2V0c1tp
XSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIH0KLSAgICAKLSAgICBWYWx1ZVBy
b2ZpbGVCYXNlKGludCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpCiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKQEAgLTg2LDggKzc4LDEwIEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mU2FtcGxlcygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBtX251bWJl
ck9mU2FtcGxlc0luUHJlZGljdGlvbjsKKyAgICAgICAgcmV0dXJuIG51bWJlck9mU2FtcGxlcygp
ICsgaXNTYW1wbGVkQmVmb3JlKCk7CiAgICAgfQorCisgICAgYm9vbCBpc1NhbXBsZWRCZWZvcmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZWRpY3Rpb24gIT0gU3BlY05vbmU7IH0KICAgICAKICAgICBi
b29sIGlzTGl2ZSgpIGNvbnN0CiAgICAgewpAQCAtMTA5LDcgKzEwMyw3IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAg
ICB7Ci0gICAgICAgIG91dC5wcmludCgic2FtcGxlcyA9ICIsIHRvdGFsTnVtYmVyT2ZTYW1wbGVz
KCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKKyAg
ICAgICAgb3V0LnByaW50KCJzYW1wbGVkIGJlZm9yZSA9ICIsIGlzU2FtcGxlZEJlZm9yZSgpLCAi
IGxpdmUgc2FtcGxlcyA9ICIsIG51bWJlck9mU2FtcGxlcygpLCAiIHByZWRpY3Rpb24gPSAiLCBT
cGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CiAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVl
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7
ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1
Y2tldHNbaV0pOwpAQCAtMTMzLDcgKzEyNyw2IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsK
ICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uKys7CiAg
ICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgc3BlY3VsYXRpb25Gcm9t
VmFsdWUodmFsdWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CkBAIC0xNDIsMTcgKzEzNSwxMyBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAgfQog
ICAgIAotICAgIGludCBtX2J5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICB1
bnNpZ25lZCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbiB7IDAgfTsKLSAgICAKLSAgICBT
cGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwotICAgIAogICAgIEVuY29k
ZWRKU1ZhbHVlIG1fYnVja2V0c1t0b3RhbE51bWJlck9mQnVja2V0c107CisKKyAgICBTcGVjdWxh
dGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwogfTsKIAogc3RydWN0IE1pbmltYWxW
YWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwwPiB7CiAgICAgTWluaW1hbFZh
bHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KCkgeyB9Ci0gICAgTWluaW1hbFZhbHVl
UHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHVuc2lnbmVkIGxvZ051bWJlck9mQnVja2V0c0Fy
Z3VtZW50PgpAQCAtMTYzLDIzICsxNTIsMTIgQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHMgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWIKICAg
ICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+
KCkKICAgICB7CiAgICAgfQotICAgIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMo
aW50IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICA6IFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dO
dW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oYnl0ZWNvZGVPZmZzZXQpCi0gICAgewotICAgIH0KIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7CiAgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9m
ZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zm
c2V0KSB7IH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50IGdldFZhbHVl
UHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFQqIHZhbHVlUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gdmFs
dWVQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwotfQotCiAvLyBUaGlzIGlzIGEgbWluaSB2YWx1
ZSBwcm9maWxlIHRvIGNhdGNoIHBhdGhvbG9naWVzLiBJdCBpcyBhIGNvdW50ZXIgdGhhdCBnZXRz
CiAvLyBpbmNyZW1lbnRlZCB3aGVuIHdlIHRha2UgdGhlIHNsb3cgcGF0aCBvbiBhbnkgaW5zdHJ1
Y3Rpb24uCiBzdHJ1Y3QgUmFyZUNhc2VQcm9maWxlIHsKQEAgLTE5OCw4ICsxNzYsNyBAQCBpbmxp
bmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFJhcmVDYXNlUHJvZmlsZSog
cmFyZUNhc2VQcm9maWxlKQogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQ7CiB9CiAKLXN0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIHsKLSAgICBWYWx1ZVBy
b2ZpbGUgbV9wcm9maWxlOworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgOiBwdWJsaWMg
VmFsdWVQcm9maWxlIHsKICAgICBpbnQgbV9vcGVyYW5kOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NTA1YWQ1NzkzNDcw
MjExOWM1OGZiNjc4N2Q5YTZjZDg4MzRkM2M1Li5iNjg2NWY3YWNhYzcxMjBkOGYxNmE1YjRhNjQ1
NzA2YmVkNmEwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNDc5NSw3ICs0Nzk1LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewog
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0VGhpcygpOwogICAgICAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKGNvZGVC
bG9jayk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOworICAgICAgICAgICAg
U3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGNh
Y2hlZFN0cnVjdHVyZUlEKQorICAgICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0t
PmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7CiAgICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKICAgICAgICAgICAg
ICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCiAgICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0
dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCkt
Pm1ldGhvZFRhYmxlLnRvVGhpcwpAQCAtNjAxMSw3ICs2MDE0LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgICAgIGJ1ZmZl
ci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQp
OwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmls
ZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5p
c0xvY2FsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVu
ZChwcmVkaWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlZTUzZDYxZDdmNzU0Njc4MWE5
MDQ2NzYwZjJhNWE5ZWYzOGI2ZWQ1Li4yNWM0YzA5MGQ2MDAxZTZiYzExZjQwYjY0NmI5ZGY2NzZi
NmMwNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTM1NSw3ICszNTUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcgogICAgIGlmIChjb25z
dHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIGF1dG8g
cmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURh
dGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUgPSByYXJlRGF0YS0+b2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKTsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKiBh
bGxvY2F0aW9uUHJvZmlsZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1
cmUoKTsKICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGRlYmQwM2ViMWVjNjg1ZDA3YzBhNzViMWU4ZDNmYTRhOWU1YzY3NTIuLmQwNDEwYjM1ZDM5
MDE3ZjgwZGI1OTA1ZWQ0OTJkM2UzMzg2OGJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjU2NSwxNCArMTI1NjUsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVRoaXMoTm9kZSogbm9kZSkKICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwogICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikp
OwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsK
LSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rp
b25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2Nh
dG9yR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRh
R1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJl
KCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgSklUQWxsb2Nh
dG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBz
Y3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURh
dGFHUFIpOwotICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQ
UiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIGlubGlu
ZUNhcGFjaXR5R1BSKTsKKyAgICBtX2ppdC5sb2FkOChKSVRDb21waWxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIGlubGluZUNhcGFj
aXR5R1BSKTsKICAgICBtX2ppdC5lbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0R1BS
LCBpbmxpbmVDYXBhY2l0eUdQUik7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAppbmRleCA4OTk5NWU2NzQ4ZDNmMjQyYTVlMDIwNWNhMGNhZTE2NDU4Mzk3
ZTMwLi43MGM5OTNhNzE4YTc3MWYxNjFkY2YyYmUzNDIxMmYwOTE4ZWI5ZjBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aApAQCAtNTcsOCArNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNl
dE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1
bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAg
IG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVj
dEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAotICAg
IG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0
dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAorICAgIG1h
Y3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVE
YXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwg
R2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYWZjNGIyOTUzZDMyMjVkZTA4NjE2
NzI3NDczY2FkN2NlYzNkYzI1OS4uYzA2NDM4N2JlYTYwYzQ5Mzg3M2ExZTkxZTU1ZDRkNTU5Zjdh
Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0lu
Zm8qKQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwKTsKICAgICAgICAg
SnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAg
c3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlu
a0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAg
ICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGI0MmU5OTdhYWI2M2RiYjE1MmRhZTI0MmQ3Yjk0ZjBl
MzRlOTM2OTcuLmFmNjA4ZjAzMTBkMThlYjJmYmJlMmRkNjg0YjJlNWNlZmQ4M2I3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTE2MCw3ICsxNjAs
NyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJ
bmZvKikKICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJlZ1QxKTsKICAgICAgICAgSnVtcCBk
b25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVn
VDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgc3RvcmUz
MihyZWdUMSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAg
ZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggMThjZWJhNmFkOTBiODA4YzRlMDRmZmQxOGYxY2I5MjY1MjJmNDI2Mi4u
ZjA1ZGJhOTY0YjJlNjc3YTg5M2IxZGQxZWZiYWRjMjRjM2U4M2E0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC03MDcsNyArNzA3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CiAgICAgICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAg
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGUmPihwcm9m
aWxlKSk7CiAgICAgICAgIH0pOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKQEAg
LTg3OCwxNSArODc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVy
ZT4qIGNhY2hlZFN0cnVjdHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBT
dHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1
cmVJRDsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0Lm9mZnNl
dCgpLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwog
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBGaW5hbE9iamVjdFR5cGUp
KTsKLSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNo
ZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwog
fQogCkBAIC05MDgsOCArOTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVS
ZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSksIGFsbG9jYXRvclJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVn
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJl
Zyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJv
dG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKIAogICAgIGxvYWRQ
dHIoY2FjaGVkRnVuY3Rpb24sIGNhY2hlZEZ1bmN0aW9uUmVnKTsKICAgICBKdW1wIGhhc1NlZW5N
dWx0aXBsZUNhbGxlZXMgPSBicmFuY2hQdHIoRXF1YWwsIGNhY2hlZEZ1bmN0aW9uUmVnLCBUcnVz
dGVkSW1tUHRyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKSk7CkBAIC05MTks
OSArOTE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgYXV0
byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JSZWcs
IHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3Moc2NyYXRjaFJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgc2NyYXRj
aFJlZyk7Ci0gICAgbG9hZDMyKEFkZHJlc3Moc2NyYXRjaFJlZywgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIHNjcmF0Y2hSZWcpOworICAgIGxvYWQ4KEFk
ZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBz
Y3JhdGNoUmVnKTsKICAgICBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBz
Y3JhdGNoUmVnKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDI1YTljOGYzNTBhZGMzZTY5NDQw
ZGFjYTM0ZDgyNDIyZWU0ZjE4MmMuLjk3YWUyZmJlNWIyZjM3NTk1NDQ0OGRlODVhODExMThkZWQ4
OWQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
UmVncyByZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlKTsKICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpAQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhj
YWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsK
ICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAg
bG9hZDMyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURh
dGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0
dXJlUmVnKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0
aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CiAKICAgICBs
b2FkUHRyKGNhY2hlZEZ1bmN0aW9uLCBjYWNoZWRGdW5jdGlvblJlZyk7CiAgICAgSnVtcCBoYXNT
ZWVuTXVsdGlwbGVDYWxsZWVzID0gYnJhbmNoUHRyKEVxdWFsLCBjYWNoZWRGdW5jdGlvblJlZywg
VHJ1c3RlZEltbVB0cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSkpOwpAQCAt
MTAzMSw5ICsxMDMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0
b3JSZWcsIHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwot
ICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRk
cmVzcyhzY3JhdGNoUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNo
UmVnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRk
cmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNj
cmF0Y2hSZWcpOwogICAgIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNj
cmF0Y2hSZWcpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFN0b3JlQ2Vs
bChieXRlY29kZS5tX2RzdC5vZmZzZXQoKSwgcmVzdWx0UmVnKTsKQEAgLTEwNDMsNyArMTA0MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVj
dHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJRCogY2Fj
aGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKICAgICBpbnQg
dGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCk7CiAKICAgICBlbWl0TG9h
ZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CkBAIC0xMDUxLDcgKzEwNDksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNoZWRT
dHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDAsIHJlZ1QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDVhMDAzYWFmMzAwMzFmZDM2MWRmNDBiN2RlN2EyNmIyNTZmOGVjZDgu
LjEyYjc4YWFkZjQ1ODlkZDQ4M2NjODc5MmQyZDYzODYzNTE5OTBlZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAg
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVBy
b2ZpbGUoRXhlY1N0YXRlKiBleGVjLAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBtZXRhZGF0YS5t
X2J1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
LSAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAg
IHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIo
cHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggNTE5YWQ3YWVjMzY0YWJhOTI2NjAxNGMyZDNlYjQ2MmQyNTliMzcxMy4uOWQ2MjE0
ODFmNzc0NzRlZmI4MzFiZDRlNWYxZjU4MjI5ZTMzMjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU4Myw3ICs1ODMsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVn
KTsKICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1v
ZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZSks
IFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVh
bCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsK
ICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgJm1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpOwogICAg
ICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyZTkwYzcwMWRhMWVj
NzViMTgyMmFhNmQ3YjNiZTdjNzQyNmYyNWI3Li4yNTRmY2RjZGRhZmQ2MjRjMDc1ODAxMDc2Yzgw
N2Q4Nzc3ZjFmZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTc0MCwxOSArNzQwLDI0IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJ
ZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBJbnN0cnVjdGlv
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAKICAg
ICBpZiAoc2xvdC5pc1Vuc2V0KCkpIHsKLSAgICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJ
ZE1vZGU6OlVuc2V0OworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0
QnlJZE1vZGU6OlVuc2V0OwogICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1v
ZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKIAotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQ7CisgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
IEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ7IC8vIFRoaXMgbXVzdCBiZSBmaXJzdCBzZXQuIEluIDY0
Yml0IGFyY2hpdGVjdHVyZSwgdGhpcyBmaWVsZCBpcyBzaGFyZWQgd2l0aCBwcm90b0xvYWRNb2Rl
LmNhY2hlZFNsb3QuCiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5z
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldCA9IG9mZnNldDsKLSAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPSBzbG90LnNsb3RCYXNlKCk7CiAg
ICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgcG9pbnRlciB3aWxsIHJlbWFpbiB2YWxpZCBiZWNhdXNl
IGl0IHdpbGwgYmUgY2xlYXJlZCBieSBlaXRoZXIgYSB3YXRjaHBvaW50IGZpcmUgb3IKICAgICAv
LyBkdXJpbmcgR0Mgd2hlbiB3ZSBjbGVhciB0aGUgTExJbnQgY2FjaGVzLgogICAgIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdCA9IHNsb3Quc2xvdEJhc2Uo
KTsKKworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRN
b2RlOjpQcm90b0xvYWQpOworICAgIEFTU0VSVCghbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0
Q291bnRGb3JMTEludENhY2hpbmcpOworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEID09IHN0cnVjdHVyZS0+aWQoKSk7CisgICAgQVNT
RVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0ID09
IG9mZnNldCk7CisgICAgQVNTRVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuY2FjaGVkU2xvdCA9PSBzbG90LnNsb3RCYXNlKCkpOwogfQogCiAKQEAgLTc3NSw4ICs3ODAs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICAm
JiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBhdXRvIG1vZGUgPSBtZXRhZGF0YS5tX21v
ZGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9k
ZTo6RGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtODA0LDEyICs4MDgsMTIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZCkKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBv
dXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0OworICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
IEdldEJ5SWRNb2RlOjpEZWZhdWx0OwogICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAg
Ly8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAg
ICAgICAgICBtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsK
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KCkpIHsKQEAgLTgyMCwyMSArODI0LDIyIEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVk
T2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChz
bG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAo
VU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcg
JiYgKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSkpIHsKICAgICAgICAgICAgIEFT
U0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEo
LS1tZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICgh
KC0tbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAg
ICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGV4ZWMsIHZtLCBwYywgbWV0
YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgaXNKU0FycmF5KGJhc2VWYWx1
ZSkKICAgICAgICAgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7Ci0gICAg
ICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aDsKLSAgICAgICAg
bmV3ICgmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSkgQXJyYXlQcm9maWxlKGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKKyAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Cisg
ICAgICAgIG5ldyAoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJh
eVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAKICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90
eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgfQogCiAgICAgTExJTlRfUFJPRklMRV9W
QUxVRShyZXN1bHQpOwpAQCAtMTUwMiwxMiArMTUwNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luCiAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKIAogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y2FsbGVyQ29kZUJsb2NrLT5tX2xvY2spOwotCi0gICAgICAgICAgICAgICAgaWYgKGNhbGxMaW5r
SW5mby0+aXNPbkxpc3QoKSkKLSAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1v
dmUoKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQodm0sIGNhbGxl
ckNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgaW50ZXJuYWxGdW5j
dGlvbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9
IGNvZGVQdHI7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJD
b2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24sIGNvZGVQdHIpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBKU0VudHJ5UHRyVGFnKTsKQEAgLTE1NTAsMTIgKzE1NTAsNyBAQCBpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbgogICAgICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOwogCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY2FsbGVyQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAKLSAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxp
c3QoKSkKLSAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7Ci0gICAgICAgIGNhbGxM
aW5rSW5mby0+Y2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUpOwotICAgICAg
ICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBj
YWxsZWUpOwotICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ZSwgY29kZVB0cik7CiAgICAgICAgIGlmIChjb2RlQmxvY2spCiAgICAgICAgICAgICBjb2RlQmxv
Y2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICB9CkBAIC0xOTI4
LDcgKzE5MjMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRj
aCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAg
cHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUu
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5t
X29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICBMTElOVF9FTkQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KaW5kZXggYzc3ZmI3ZTM2YmNkZTUzZWEzNGFkZTdlNDgzOTA2YWVjNWJmMzYzMi4u
Yzk2NjFjODczMzUwZjZkN2Y2YjAxM2ZkMDc1NDFlNmNlYTk5MTBkNyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTc0NSw3ICs3NDUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9w
VG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsCiAgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0
MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICBsb2FkcCBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIK
KyAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0
MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93
CiAgICAgZGlzcGF0Y2goKQogCkBAIC0xODM2LDcgKzE4MzYsNyBAQCBtYWNybyBjb21tb25DYWxs
T3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xv
Z3VlKQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCiAgICAgICAgIGdldChtX2NhbGxlZSwgdDAp
Ci0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8u
Y2FsbGVlW3Q1XSwgdDIKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQy
CiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFn
LCB0MywgLm9wQ2FsbFNsb3cpCiAgICAgICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKICAg
ICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCkBAIC0xODQ5LDggKzE4
NDksOCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0
cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50
Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVl
ICsgVGFnT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2Fs
bCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFy
Z2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1
bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFn
KQorICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFn
KQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgogICAgICAgICBz
bG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHBy
ZXBhcmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBjODA3NDM1ODQ1MDljZmVlMzA5OTNhNmViMTEyNTVk
MjEzMzUxYzYyLi44MTE5ZGEyY2JmZjdhYjQ4MjAzMmI3MmFkMzM3YjUxYWJmYjE5YzM1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0
LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
cjY0LmFzbQpAQCAtNzAxLDEwICs3MDEsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190
aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLAogICAg
IGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9UaGlz
U2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BU
b1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQzKQor
ICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgbWV0YWRhdGEodDIs
IHQzKQotICAgIGxvYWRwIE9wVG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJd
LCB0MgotICAgIGJwbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRpIE9wVG9UaGlz
OjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCisgICAgYmluZXEgdDEsIHQy
LCAub3BUb1RoaXNTbG93CiAgICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNTbG93OgpAQCAtMTI4
OCw3ICsxMjg4LDcgQEAgZW5kKQogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwg
T3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikK
ICAgICBtZXRhZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9t
b2RlW3QyXSwgdDEKKyAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0
YS5tb2RlW3QyXSwgdDEKICAgICBnZXQobV9iYXNlLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQogCkBAIC0xOTE4LDcgKzE5
MTgsNyBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKICAg
ICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCiAgICAgYnRxbnogdDAs
IHRhZ01hc2ssIC5kb25lCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDMK
LSAgICBzdG9yZWkgdDMsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUu
bV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1XQorICAgIHN0b3JlaSB0MywgJW9wY29kZVN0cnVjdCU6
Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0
dXJlSURbdDVdCiAuZG9uZToKIGVuZAogCkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBtYWNybyBjb21t
b25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGws
IHByb2xvZ3VlKQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCiAgICAgICAgIGdldChtX2NhbGxl
ZSwgdDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8uY2FsbGVlW3Q1XSwgdDIKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFk
YXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0
NV0sIHQyCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQogICAg
ICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93CiAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBtX2FyZ3YsIHQzKQpAQCAtMTk0Myw4ICsxOTQzLDggQEAgbWFjcm8gY29tbW9uQ2Fs
bE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9s
b2d1ZSkKICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0K
ICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KICAg
ICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQs
IEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgcHJlcGFyZUNh
bGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQ
dHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKICAgICAgICAgc2xvd1BhdGhGb3JDYWxsKHNpemUs
IG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDg1
NDQxODg4MzZmZTY4OWNkOGE2N2QyYmZmNDM3MjUyMTczY2Y1YmUuLjRlNzhhNDhkNmQxOWViOWIw
NmQzYzllZDA3NGU5NTgxMTJkMDhhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIFNMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICAgICAgICAgIGNhY2hlZENhbGxlZS5z
ZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygp
KTsKIAogICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBieXRlY29kZS5tX2lubGluZUNh
cGFjaXR5OwotICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogYWxsb2NhdGlvblByb2Zp
bGUgPSBjb25zdHJ1Y3Rvci0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVj
LCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CisgICAgICAgIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSogYWxsb2NhdGlvblByb2ZpbGUgPSBj
b25zdHJ1Y3Rvci0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxp
bmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIHRocm93U2Nv
cGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgICAgICByZXN1bHQgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwpAQCAtMjcyLDE2ICsyNzIsMTcg
QEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgYXV0byYgbWV0YWRhdGEg
PSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICBKU1ZhbHVlIHYxID0gR0VUKGJ5dGVjb2Rl
Lm1fc3JjRHN0KS5qc1ZhbHVlKCk7CiAgICAgaWYgKHYxLmlzQ2VsbCgpKSB7Ci0gICAgICAgIFN0
cnVjdHVyZSogbXlTdHJ1Y3R1cmUgPSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKLSAgICAg
ICAgU3RydWN0dXJlKiBvdGhlclN0cnVjdHVyZSA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
LmdldCgpOwotICAgICAgICBpZiAobXlTdHJ1Y3R1cmUgIT0gb3RoZXJTdHJ1Y3R1cmUpIHsKLSAg
ICAgICAgICAgIGlmIChvdGhlclN0cnVjdHVyZSkKKyAgICAgICAgU3RydWN0dXJlSUQgbXlTdHJ1
Y3R1cmVJRCA9IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpOworICAgICAgICBTdHJ1Y3R1cmVJ
RCBvdGhlclN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKKyAgICAg
ICAgaWYgKG15U3RydWN0dXJlSUQgIT0gb3RoZXJTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAg
aWYgKG90aGVyU3RydWN0dXJlSUQpCiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNT
dGF0dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRT
dHJ1Y3R1cmUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgbXlTdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IG15U3RydWN0dXJlSUQ7CisgICAg
ICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihleGVjLT5jb2RlQmxvY2soKSwgdm0uZ2V0U3Ry
dWN0dXJlKG15U3RydWN0dXJlSUQpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAg
IG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgbWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgbWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRCA9IDA7CiAgICAgfQogICAgIC8vIE5vdGU6IFdlIG9ubHkgbmVlZCB0byBk
byB0aGlzIHZhbHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93IHBhdGguIFRoZSBmYXN0IHBh
dGgKICAgICAvLyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRvIHRvX3RoaXMgaWYgdGhlIHN0cnVj
dHVyZSBjaGVjayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCmluZGV4IGE2YTZkZjAwZDQ1NDc4
OTgwMTkwNGZmNWVlY2VhMjJiZGRjNzkyMWMuLjJlZGEzMmJhMzg1MzYxMGQwMWE5NDVhNmE0OWY1
ZmE0MDRjM2IzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblJhcmVEYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YSBm
aW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1
bmN0aW9uUmFyZURhdGEsIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOwogICAgIH0KIAotICAg
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCisgICAg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKiBvYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gJm1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7
CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwg
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLwogICAgIC8vIFdlIGRvbid0IHJlYWxseSBjYXJlIGFi
b3V0IDEpIHNpbmNlIHRoaXMgbWVtb3J5IGlzIHJhcmUgYW5kIHNtYWxsIGluIHRvdGFsLiAyKSBp
cyB1bmZvcnR1bmF0ZSBidXQgaXMKICAgICAvLyBwcm9iYWJseSBvdXR3ZWlnaGVkIGJ5IHRoZSBj
b3N0IG9mIDMpLgotICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIG1fb2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU7CisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlIG1fb2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX29iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGUgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU7CiAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCBkNzczZDg1NWZmYzJlMDE1
NDhlY2Y2ZGFhOGNkOGQ1NTU5MWM4Yzk2Li4wNWU0MDk5YjE2NGM2YThhMWQ3MTM3NGNmZGM0NWI2
MmQ4Mzg2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVy
LmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIGJvb2wgSGVhcFZlcmlmaWVyOjp2YWxpZGF0ZUpTQ2Vs
bChWTSogZXhwZWN0ZWRWTSwgSlNDZWxsKiBjZWxsLCBDZWxsUHJvZmlsZSogcHJvCiAgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0ganNEeW5hbWljQ2FzdDxDb2RlQmxvY2sqPih2bSwgY2Vs
bCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShjb2RlQmxvY2spKSB7CiAgICAgICAgICAgICBib29s
IHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICAgICAgY29kZUJsb2NrLT5mb3JFYWNoVmFsdWVQcm9m
aWxlKFsmXShWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSkgeworICAgICAgICAgICAgY29kZUJs
b2NrLT5mb3JFYWNoVmFsdWVQcm9maWxlKFsmXShWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSwg
Ym9vbCkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBWYWx1ZVBy
b2ZpbGU6OnRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZVByb2ZpbGUubV9idWNrZXRzW2ld
KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370135</attachid>
            <date>2019-05-17 12:45:36 -0700</date>
            <delta_ts>2019-05-17 13:03:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517124535.patch</filename>
            <type>text/plain</type>
            <size>77651</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5mZTVlZDdlOGUwZWE5NmQ2
YzllZGNlNGVkY2RmZmEzZTVkOTFlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gc2hyaW5rIE1ldGFkYXRhLiBUaGlzIHBhdGNoIGZpcnN0IGZvY3VzIG9uIGxvdyBoYW5naW5n
IGZydWl0czogaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhbmdlIHJlbW92aW5nIE9TUiBleGl0
IEpTVmFsdWUgaW4gVmFsdWVQcm9maWxlLgorICAgICAgICBUaGlzIHBhdGNoIHVzZXMgZmFuY3kg
Yml0IGp1Z2dsaW5nICYgbGV2ZXJhZ2VzIG5pY2UgZGF0YSB0eXBlcyB0byByZWR1Y2UgTWV0YWRh
dGEsIGFzIGZvbGxvd3MuCisKKyAgICAgICAgMS4gVmFsdWVQcm9maWxlIGlzIHJlZHVjZWQgZnJv
bSAzMiB0byAyNC4gSXQgcmVkdWNlcyBNZXRhZGF0YSB1c2luZyBWYWx1ZVByb2ZpbGUuCisgICAg
ICAgIDIuIEFycmF5UHJvZmlsZSBpcyByZWR1Y2VkIGZyb20gMTYgdG8gMTIuIERpdHRvLgorICAg
ICAgICAzLiBPcENhbGw6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA4OCB0byA2NC4KKyAgICAg
ICAgNC4gT3BHZXRCeUlkOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNTYgdG8gNDAuCisgICAg
ICAgIDUuIE9wVG9UaGlzOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNDggdG8gMzIuCisgICAg
ICAgIDYuIE9wTmV3T2JqZWN0OjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gMzIgdG8gMTYuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBnYXRoZXJlZCBkYXRhLCBpdCBzaG91bGQgcmVkdWNl
IDEtMk1CIGluIHN0ZWFkeSBzdGF0ZSBpbiBHbWFpbCwgbXVjaCBtb3JlIGluIHBlYWsgbWVtb3J5
LCB+MSBNQiBpbiB0aGUgc3RhdGUganVzdCBhZnRlciBmdWxsIEdDLgorICAgICAgICBJdCBhbHNv
IGltcHJvdmVzIFJBTWlmaWNhdGlvbiBieSAwLjMlICg2IHJ1bnMpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICBXZSB1c2UgUHJv
dG9Mb2FkJ3MgSlNPYmplY3QncyBoaWdoIGJpdHMgdG8gZW1iZWQgaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgYW5kIG1vZGUsIHNpbmNlIHRoZXkKKyAgICAgICAgYXJlIGFsd2F5cyB6ZXJvIGZvciBQ
cm90b0xvYWQgbW9kZS4KKworICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxM
aW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgSW4gTExJbnRDYWxsTGlua0luZm8sIHdlIGFsd2F5cyBzZXQg
dGhlIHNhbWUgdmFsdWUgdG8gbGFzdFNlZW5DYWxsZWUgYW5kIGNhbGxlZS4gQnV0IGxhdGVyLCBj
YWxsZWUgY2FuIGJlIGNsZWFyZWQuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgd2UgY2FuIHJlcHJl
c2VudCB0aGVtIGluIG9uZSB2YWx1ZSArIGNsZWFyZWQgZmxhZy4gV2UgZW5jb2RlIHRoaXMgZmxh
ZyBpbnRvIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBjYWxsZWUgY2VsbCBzbworICAgICAgICB0aGF0
IHdlIGNhbiBtYWtlIHRoZW0gb25lIHBvaW50ZXIuIFdlIGFsc28gdXNlIFBhY2tlZFJhd1NlbnRp
bmVsTm9kZSB0byBnZXQgc29tZSBzcGFjZSwgYW5kIGVtYmVkIEFycmF5UHJvZmlsZSBpbnRvIHRo
aXMgc3BhY2UKKyAgICAgICAgdG8gZ2V0IGZ1cnRoZXIgbWVtb3J5IHJlZHVjdGlvbi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpidWZmZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6b2Zmc2V0T2ZBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpjbGVhcik6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpwcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2Fw
YWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5saW5lQ2FwYWNpdHkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46Omlu
aXRpYWxpemVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICBPcE5ld09iamVjdCdzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBwcm90b3R5cGUuIFNvIHdlIGhhdmUg
dHdvIHZlcnNpb25zIG5vdywgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgYW5kIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZQorICAgICAgICB0byBjdXQgb25lIHBvaW50ZXIuIFdl
IGFsc28gcmVtb3ZlIGlubGluZSBjYXBhY2l0eSBzaW5jZSB0aGlzIGNhbiBiZSByZXRyaWV2ZWQg
ZnJvbSBTdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRv
dGFsTnVtYmVyT2ZTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6aXNTYW1wbGVkQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVBy
b2ZpbGVCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBp
cyBubyBsb25nZXIgdXNlZC4gQW5kIHNhbXBsZSBjb3VudCBpcyBub3QgdXNlZCBlZmZlY3RpdmVs
eS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiB0
b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlk
YXRlSlNDZWxsKToKKwogMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2lu
dGVycyBpbiBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCmluZGV4IGMwMGFlZjIxYjZlYmI2MTllOTFjNzQ2YWY0ZmIwOWM1ODRmZDY2
YmIuLjNlMTUwYTAxMjM5NmIxMjgyNDUyOGE1ZTlmMmI5ODM3ZThjN2RlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0zMywxMCAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLWNvbnN0
IGNoYXIqIGNvbnN0IEFycmF5UHJvZmlsZTo6c190eXBlTmFtZSA9ICJBcnJheVByb2ZpbGUiOwot
I2VuZGlmCi0KIC8vIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBvcmRlciBvZiBUeXBlZEFycmF5VHlw
ZS4KIGNvbnN0IEFycmF5TW9kZXMgdHlwZWRBcnJheU1vZGVzW051bWJlck9mVHlwZWRBcnJheVR5
cGVzRXhjbHVkaW5nRGF0YVZpZXddID0gewogICAgIEludDhBcnJheU1vZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0
MmE1NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4
YzBlOGRlMjM3YjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFy
cmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAg
IEFycmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFy
cmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjM4LDE2ICsy
MjksMTEgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKICAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSA9PSBzX3R5cGVOYW1lOyB9Ci0jZW5kaWYKLQogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsg
Ly8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVj
aWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBp
dCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2lj
YWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdl
KSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1w
bGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwpAQCAtMjU1LDEzICsyNDEs
NyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OwotCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVOYW1lOwotICAg
IGNvbnN0IGNoYXIqIG1fdHlwZU5hbWUgeyBzX3R5cGVOYW1lIH07Ci0jZW5kaWYKIH07Ci0KLXR5
cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgND4gQXJyYXlQcm9maWxlVmVjdG9y
Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMDY5NWEyNTA3YjYyMzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uY2Rl
ZTU2OWM4ZDAyMGIwZDc5M2NlODRhZTg4YWM1ZGJlMWI1MTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAK
ICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
KyAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNT
dGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KQEAgLTQxNCw4ICs0MTQsNiBAQAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAg
aGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CkBAIC03MDYsNyArNzA0LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBA
IC03MTksNyArNzE2LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxM
aW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03MzIs
NyArNzI4LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03ODcsNyArNzgy
LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uNzlmMDZkYzMyNTNhMjUxYzIyOWQ0MjUwMWE3MjMxNDdmNzQzYmQ0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQg
PyBudWxscHRyIDogdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTElu
dCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0
YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZvKFsmXShM
TEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8uY2FsbGVlLmdl
dCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2VkKCkgJiYgIXZtLmhlYXAu
aXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTElu
dCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLnVu
bGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5rSW5mby5sYXN0U2VlbkNh
bGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0
KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01h
cmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAgICAgICAgICBjYWxsTGlu
a0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQogCkBAIC0yNTc1LDE3ICsy
NTY4LDI0IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0CiB7CiAgICAgYXV0byBpbnN0cnVjdGlv
biA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBzd2l0Y2ggKGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwKKyNkZWZpbmUgQ0FTRTEo
T3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAogICAgICAgICByZXR1cm4gJmluc3RydWN0
aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmlsZTsKIAotICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ0FTRSkKLSN1bmRlZiBDQVNFCisjZGVmaW5l
IENBU0UyKE9wKSBcCisgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKKyAgICAgICAgcmV0dXJuICZp
bnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9jYWxsTGlua0luZm8ubV9hcnJh
eVByb2ZpbGU7CisKKyAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENBU0Ux
KQorICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKENBU0UyKQor
CisjdW5kZWYgQ0FTRTEKKyN1bmRlZiBDQVNFMgogCiAgICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29k
ZUlEOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlk
PigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwot
ICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkK
KyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yNjMzLDE2ICsyNjMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9u
c0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyCiAgICAgbnVtYmVy
T2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJ
blByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVy
T2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2Zp
bGVzIGFyZSBmdWxsLgogCi0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxl
JiBwcm9maWxlKSB7CisgICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiBw
cm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9
IHByb2ZpbGUudG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChW
YWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKICAgICAgICAgaWYgKG51bVNhbXBs
ZXMgPiBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cykKICAgICAgICAgICAgIG51bVNhbXBs
ZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBwcm9m
aWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0LgogICAg
ICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7Ci0gICAgICAgIGlm
IChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAgICAgIGlmIChpc0FyZ3VtZW50
KSB7CiAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLm51
bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUubV9wcmVkaWN0aW9uICE9IFNwZWNOb25lKQorICAg
ICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJl
Zm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
Kys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAg
ICAgfSk7CkBAIC0yNjUwLDcgKzI2NTEsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJl
ZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25BcgogICAg
IGlmIChhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBwcm9maWxlQnVja2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9maWxlcykgewogICAgICAg
ICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yODAwLDEyICsyODAxLDExIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2Fs
QmluZGluZ1VwZGF0ZSgpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogewog
ICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKLSAgICBmb3JF
YWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkgewotICAgICAgICBpZiAo
cHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewotICAgICAgICAgICAgQVNTRVJUKHByb2Zp
bGUubV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAgYXJn
ID0gJXU6ICIsIGkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGZvckVhY2hWYWx1ZVBy
b2ZpbGUoW10oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKKyAgICAg
ICAgaWYgKGlzQXJndW1lbnQpCisgICAgICAgICAgICBkYXRhTG9nRigiICAgYXJnOiAiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjOiAiKTsKICAgICAgICAgaWYg
KCFwcm9maWxlLm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUubV9wcmVkaWN0aW9uID09IFNw
ZWNOb25lKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiPGVtcHR5PlxuIik7CiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCBhOTNjMzZmYjkxOGYzYjMwY2FiMGM3OThlNjFlNzBjYTU5MWIxOGNmLi5mNWRiZmVjNjk0
YmQxNDcyYjk5YWM1ZjBlYjMxZDBkMGFkMGNmZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00NzgsNyArNDc4LDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBBU1NFUlQodm0oKS0+Y2FuVXNlSklU
KCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlvdXMgSklUIGNvbXBpbGVy
cyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxl
cyBiZWZvcmUgY2FsbGluZyB0aGlzLgogICAgICAgICBWYWx1ZVByb2ZpbGUmIHJlc3VsdCA9IG1f
YXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIApAQCAtOTc0LDcgKzk3Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIFZNKiBtX3ZtOwogCiAgICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2lu
dGVyIHsgbnVsbHB0ciB9OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5m
bywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJ
bnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdMTEludENhbGxz
OwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5SWRXYXRjaHBvaW50TWFw
OwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCmluZGV4
IGYwMGIzOTc4NzMyZTRmNjdkZDJlNTU2MTA0NzdmZGMyZjdhNWNhY2IuLjIyZTc2YjE4NWViOWVi
YTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzUsMTEgKzM1LDExIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmls
ZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCi0gICAgICAgIGZ1bmModmFsdWVQ
cm9maWxlRm9yQXJndW1lbnQoaSkpOworICAgICAgICBmdW5jKHZhbHVlUHJvZmlsZUZvckFyZ3Vt
ZW50KGkpLCB0cnVlKTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9f
b3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZh
bHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShW
SVNJVCkKIApAQCAtNTMsMTYgKzUzLDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5
TGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0g
R2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CiAgICAgICAgIH0p
OwogCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyNkZWZpbmUgVklTSVQxKF9fb3ApIFwKICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCi0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRI
X0FSUkFZX1BST0ZJTEUoVklTSVQpCisjZGVmaW5lIFZJU0lUMihfX29wKSBcCisgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEu
bV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKIAotI3VuZGVmIFZJU0lUCisgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQxKQorICAgICAgICBG
T1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhWSVNJVDIpCisKKyN1bmRl
ZiBWSVNJVDEKKyN1bmRlZiBWSVNJVDIKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBkYzQzNGU2YzRiN2ZkNGVk
ODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi41OWM0M2ZlYzQwNmU5ZGI5NWY2MzBiMWE3OGE1MzBm
NWNlMTY2YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsNzkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVt
IGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0gICAgRGVmYXVsdCA9IDAsCi0gICAgVW5z
ZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAgUHJvdG9Mb2FkID0gMCwgLy8gVGhpcyBt
dXN0IGJlIHplcm8gdG8gcmV1c2UgdGhlIGhpZ2hlciBiaXRzIG9mIHRoZSBwb2ludGVyIGFzIHRo
aXMgUHJvdG9Mb2FkIG1vZGUuCisgICAgRGVmYXVsdCA9IDEsCisgICAgVW5zZXQgPSAyLAogICAg
IEFycmF5TGVuZ3RoID0gMywKIH07CiAKKy8vIEluIDY0Yml0IExpdHRsZSBlbmRpYW4gYXJjaGl0
ZWN0dXJlLCB0aGlzIHVuaW9uIHNoYXJlcyBQcm90b0xvYWQncyBKU09iamVjdCogY2FjaGVkU2xv
dCB3aXRoICJoaWdDb3VudEZvckxMSW50Q2FjaGluZyIgYW5kICJtb2RlIi4KKy8vIFRoaXMgaXMg
cG9zc2libGUgYmVjYXVzZSB0aGVzZSB2YWx1ZXMgbXVzdCBiZSB6ZXJvIGlmIHdlIHVzZSBQcm90
b0xvYWQgbW9kZS4KKyNpZiBDUFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkKIHVu
aW9uIEdldEJ5SWRNb2RlTWV0YWRhdGEgeworI2Vsc2UKK3N0cnVjdCBHZXRCeUlkTW9kZU1ldGFk
YXRhIHsKKyNlbmRpZgogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGEoKQotICAgIHsgfQorICAgIHsK
KyAgICAgICAgZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAwOworICAgICAgICBkZWZhdWx0TW9k
ZS5jYWNoZWRPZmZzZXQgPSAwOworICAgICAgICBkZWZhdWx0TW9kZS5wYWRkaW5nMSA9IDA7Cisg
ICAgICAgIG1vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKKyAgICAgICAgaGl0Q291bnRGb3JM
TEludENhY2hpbmcgPSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygp
OworICAgIH0KIAogICAgIHN0cnVjdCBEZWZhdWx0IHsKICAgICAgICAgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQ7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICB9IGRl
ZmF1bHRNb2RlOworICAgICAgICB1bnNpZ25lZCBwYWRkaW5nMTsKKyAgICB9OworICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKERlZmF1bHQpID09IDEyKTsKIAogICAgIHN0cnVjdCBVbnNldCB7CiAg
ICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwotICAgIH0gdW5zZXRNb2RlOworICAgICAg
ICB1bnNpZ25lZCBwYWRkaW5nMTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZzI7CisgICAgfTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbnNldCkgPT0gMTIpOworCisgICAgc3RydWN0IEFy
cmF5TGVuZ3RoIHsKKyAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKKyAgICB9Owor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5TGVuZ3RoKSA9PSAxMik7CiAKICAgICBzdHJ1
Y3QgUHJvdG9Mb2FkIHsKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKICAgICAgICAgSlNPYmplY3QqIGNhY2hlZFNs
b3Q7Ci0gICAgfSBwcm90b0xvYWRNb2RlOworICAgIH07CiAKLSAgICBzdHJ1Y3QgQXJyYXlMZW5n
dGggewotICAgICAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotICAgIH0gYXJyYXlMZW5n
dGhNb2RlOworI2lmIENQVShMSVRUTEVfRU5ESUFOKSAmJiBDUFUoQUREUkVTUzY0KQorICAgIHN0
cnVjdCB7CisgICAgICAgIHVpbnQzMl90IHBhZGRpbmcxOworICAgICAgICB1aW50MzJfdCBwYWRk
aW5nMjsKKyAgICAgICAgdWludDMyX3QgcGFkZGluZzM7CisgICAgICAgIHVpbnQxNl90IHBhZGRp
bmc0OworICAgICAgICBHZXRCeUlkTW9kZSBtb2RlOworICAgICAgICB1aW50OF90IGhpdENvdW50
Rm9yTExJbnRDYWNoaW5nOyAvLyBUaGlzIG11c3QgYmUgemVybyB3aGVuIHdlIHVzZSBQcm90b0xv
YWQgbW9kZS4KKyAgICB9OworICAgIERlZmF1bHQgZGVmYXVsdE1vZGU7CisgICAgVW5zZXQgdW5z
ZXRNb2RlOworICAgIEFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICBQcm90b0xvYWQg
cHJvdG9Mb2FkTW9kZTsKKyNlbHNlCisgICAgdW5pb24geworICAgICAgICBEZWZhdWx0IGRlZmF1
bHRNb2RlOworICAgICAgICBVbnNldCB1bnNldE1vZGU7CisgICAgICAgIEFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKKyAgICAgICAgUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CisgICAgfTsK
KyAgICBHZXRCeUlkTW9kZSBtb2RlOworICAgIHVpbnQ4X3QgaGl0Q291bnRGb3JMTEludENhY2hp
bmc7CisjZW5kaWYKIH07CisjaWYgQ1BVKExJVFRMRV9FTkRJQU4pICYmIENQVShBRERSRVNTNjQp
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7CisjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggNmU0ZThiZmRiZTE3NWMwNmJmOTgyZTgzNDBl
YzY0MmMzOWMyMDE4Ni4uZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4M2RkZWFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cApAQCAtNjQsNyArNjQsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZAogICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEocHJvZmls
ZWRCbG9jayk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGp1c3QgYmFpbCBpZiB3
ZSBzZWUgYSBnZXRfYnlfaWRfcHJvdG9fbG9hZC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAzOQotICAgICAgICBpZiAobWV0YWRhdGEubV9t
b2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICBpZiAobWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKICAgICAgICAgc3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oCmluZGV4IDg0YjVjMTFjNTg2NjVkMzJiYmQ1YzIyMGQ5YTkxODM4Mjg0
YTFlMTYuLjdjMjdjZGY2NmU3YTliZGRhYTJmNmFiZWEyNjI4ZmNiNDY5MzlmNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCkBA
IC0zNCwxMCArMzQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBJbnN0cnVjdGlvbjsK
IAotc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2Rl
PExMSW50Q2FsbExpbmtJbmZvPiB7Ci0gICAgTExJbnRDYWxsTGlua0luZm8oKQotICAgIHsKLSAg
ICB9CitjbGFzcyBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8TExJbnRDYWxsTGlua0luZm8+IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgdW5saW5r
ZWRCaXQgPSAweDE7CisKKyAgICBMTEludENhbGxMaW5rSW5mbygpID0gZGVmYXVsdDsKICAgICAK
ICAgICB+TExJbnRDYWxsTGlua0luZm8oKQogICAgIHsKQEAgLTQ1LDE5ICs0OCw0OSBAQCBzdHJ1
Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRD
YWxsTGlua0luZm8+IHsKICAgICAgICAgICAgIHJlbW92ZSgpOwogICAgIH0KICAgICAKLSAgICBi
b29sIGlzTGlua2VkKCkgeyByZXR1cm4gISFjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkg
Y29uc3QgeyByZXR1cm4gIShtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIHVu
bGlua2VkQml0KTsgfQogICAgIAorCisgICAgdm9pZCBsaW5rKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IGNvZGVQdHIpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJl
bW92ZSgpOworICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSk7CisgICAgICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKG93bmVyLCBjYWxsZWUpOworICAgICAgICBtX21hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICB9CisKICAgICB2b2lkIHVubGluaygpCiAgICAgewotICAgICAgICBjYWxsZWUuY2xl
YXIoKTsKLSAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgLy8gTWFrZSBsaW5rIGludmFsaWRhdGVkLiBJdCB3
b3JrcyBiZWNhdXNlIExMSW50IHRlc3RzIHRoZSBnaXZlbiBjYWxsZWUgd2l0aCB0aGlzIHBvaW50
ZXIuIEJ1dCBpdCBpcyBzdGlsbCB2YWxpZCBhcyBsYXN0U2VlbkNhbGxlZSEKKyAgICAgICAgbV9j
YWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgfD0gdW5saW5rZWRCaXQ7CisgICAgICAg
IG1fbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4oKTsKICAgICAgICAgaWYgKGlzT25MaXN0KCkpCiAgICAgICAgICAgICByZW1vdmUoKTsKICAg
ICB9Ci0gICAgCi0gICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjYWxsZWU7Ci0gICAgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PiBsYXN0U2VlbkNhbGxlZTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gbWFjaGluZUNvZGVUYXJnZXQ7CisKKyAgICBKU09iamVjdCogY2Fs
bGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNMaW5rZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTT2JqZWN0Kj4o
bV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQpOworICAgIH0KKworICAgIEpTT2Jq
ZWN0KiBsYXN0U2VlbkNhbGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PEpTT2JqZWN0Kj4obV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgJiB+
dW5saW5rZWRCaXQpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJMYXN0U2VlbkNhbGxlZSgpCisg
ICAgeworICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCA9IHVubGlu
a2VkQml0OworICAgIH0KKworICAgIEFycmF5UHJvZmlsZSBtX2FycmF5UHJvZmlsZTsKKworcHJp
dmF0ZToKKyAgICB1aW50cHRyX3QgbV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQg
eyB1bmxpbmtlZEJpdCB9OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBtX21hY2hpbmVDb2RlVGFyZ2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmlu
ZGV4IDBlZjZhNTVjOWM3MTk2MDNmMWEyZTM4YjU4MDU2NmYwYTI0NjdiZTEuLjU3YWJiOWE0YzAz
ZjJhOWZmNTFlY2VkY2RiZjIxNGU4NGE5NDA4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC02NSw3ICs2NSw4IEBA
IHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJl
SW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAKIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6
TWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2Rl
OjpEZWZhdWx0OworICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCisg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0Owog
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7
CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuaAppbmRleCA5YzNiMDY4NDI3MDM0YjA4OWJhMDk4ZTgyMmZmZDBl
MTZlZjM1MDk2Li44ZjYwZWIwZjQwYWMzYjE2ZDZhYjAzZGFkZGM2MjI4ODljZWI0YzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuaApAQCAtMTI5LDE3ICsxMjksMTggQEAgc3RydWN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlIDogcHVibGljIE1pbmltYWxWYWx1ZVByb2ZpbGUgewogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShjb25zdCBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUtleSYga2V5KQotICAgICAgICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoa2V5LmJ5dGVj
b2RlT2Zmc2V0KCkpCi0gICAgICAgICwgbV9vcGVyYW5kKGtleS5vcGVyYW5kKCkpCisgICAgICAg
IDogTWluaW1hbFZhbHVlUHJvZmlsZSgpCisgICAgICAgICwgbV9rZXkoa2V5KQogICAgIHsKICAg
ICB9CiAgICAgCiAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2J5dGVjb2Rl
T2Zmc2V0LCBtX29wZXJhbmQpOworICAgICAgICByZXR1cm4gbV9rZXk7CiAgICAgfQogICAgIAog
ICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkgbV9rZXk7CiAgICAgCiAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUsIDg+IExpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKaW5kZXggYTVkNDEyMWIxZDQxZDE2MWJmMjY1NDJlMDky
ODZjZmJkOTkzOTViOC4uOTU0ZDBiYTE2ZDc4MjEwMzk3YmNmZmY5NDg2ODk4M2JhMjAyYzQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCkBA
IC04OCwxMSArODgsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKICAgICAgICAgcmV0dXJuIHJl
ZkNvdW50KCkgPT0gMTsKICAgICB9CiAKLSAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCogYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpPZmZzZXQqPih0aGlzKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgTWV0
YWRhdGFUYWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmKTsKIApAQCAtMTAxLDYgKzk2LDExIEBA
IGNsYXNzIE1ldGFkYXRhVGFibGUgewogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKj4oKGJpdHdpc2VfY2FzdDx1aW50OF90Kj4o
dGhpcykgLSBzaXplb2YoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSkpKTsKICAg
ICB9CiAKKyAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCogYnVmZmVyKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZz
ZXQqPih0aGlzKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldEltcGwo
dW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KHRoaXMpICsgYnVmZmVyKClbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IGE3MDc1M2E3Yjk5NjRk
YzhjNWFmNjE4M2YzODAyZTA1NjRlNWRlOGMuLmY1Njc5YzkzZTVjZTBkNGM1YmIxNDhhZTM1Yzcy
OGU1MzIzMzMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0zNSwxNyArMzUsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGE7CiAKLWNsYXNzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+CitjbGFzcyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9hbGxv
Y2F0b3IpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9zdHJ1Y3R1cmUp
OyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZklubGluZUNhcGFjaXR5KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2lubGluZUNhcGFj
aXR5KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZBbGxvY2F0b3IoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlLCBtX2FsbG9jYXRv
cik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZSwgbV9zdHJ1Y3R1cmUp
OyB9CiAKLSAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCi0gICAgICAgIDogbV9pbmxpbmVD
YXBhY2l0eSgwKQotICAgIHsKLSAgICB9CisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
KCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7
IH0KIApAQCAtNTgsMzcgKzU1LDc0IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIHsK
ICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiAgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBt
X2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOworICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOwor
ICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOworICAgIH0KKworICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICB2aXNpdG9yLmFwcGVuZCht
X3N0cnVjdHVyZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVm
YXVsdFByb3BlcnR5Q291bnQoVk0mLCBKU09iamVjdCogcHJvdG90eXBlKTsKKworICAgIEFsbG9j
YXRvciBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZv
ciBnZW5lcmF0ZWQgY29kZS4KKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVy
ZTsKK307CisKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIDogcHVibGljIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT4geworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU+OworCisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSA9IGRlZmF1bHQ7
CisKKyAgICB1c2luZyBCYXNlOjpjbGVhcjsKKyAgICB1c2luZyBCYXNlOjp2aXNpdEFnZ3JlZ2F0
ZTsKKworICAgIHZvaWQgc2V0UHJvdG90eXBlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqKSB7IH0K
K307CisKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSA6IHB1Ymxp
YyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRo
UHJvdG90eXBlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU+OworCisgICAg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKCkgPSBkZWZhdWx0OworCiAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSgpCiAgICAgewogICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gbV9wcm90b3R5cGUuZ2V0KCk7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAg
ICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KLSAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSgpIHsgcmV0dXJuIG1faW5saW5lQ2FwYWNpdHk7IH0KLQogCiAgICAgdm9pZCBjbGVhcigpCiAg
ICAgewotICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOwotICAgICAgICBtX3N0cnVj
dHVyZS5jbGVhcigpOworICAgICAgICBCYXNlOjpjbGVhcigpOwogICAgICAgICBtX3Byb3RvdHlw
ZS5jbGVhcigpOwotICAgICAgICBtX2lubGluZUNhcGFjaXR5ID0gMDsKICAgICAgICAgQVNTRVJU
KGlzTnVsbCgpKTsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQobV9zdHJ1Y3R1cmUpOwor
ICAgICAgICBCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgdmlzaXRvci5h
cHBlbmQobV9wcm90b3R5cGUpOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBwb3Nz
aWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiwgSlNPYmplY3QqIHByb3RvdHlwZSk7CisgICAg
dm9pZCBzZXRQcm90b3R5cGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogb2JqZWN0
KQorICAgIHsKKyAgICAgICAgbV9wcm90b3R5cGUuc2V0KHZtLCBvd25lciwgb2JqZWN0KTsKKyAg
ICB9CiAKLSAgICBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7IC8vIFByZWNvbXB1dGVkIHRvIG1ha2Ug
dGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVkIGNvZGUuCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJ1Y3R1cmU7Citwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9wcm90b3R5cGU7Ci0gICAgdW5zaWduZWQgbV9pbmxpbmVDYXBhY2l0eTsKIH07CiAKKworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaAppbmRleCA0OTk5
MTIxYjE2NjA2NDNjODU5N2UzMjBhMGE2MjVkZGMyYzVkNjgyLi5mMTFjNGNjNGY1ZjQzYWE2Zjcz
NDc4NTQ0MGFkZjdhMGJlODE4OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCkBA
IC0zMSwxMiArMzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9p
ZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90
eXBlLCB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1
Y3RvciwgRnVuY3Rpb25SYXJlRGF0YSogZnVuY3Rpb25SYXJlRGF0YSkKK3RlbXBsYXRlPHR5cGVu
YW1lIERlcml2ZWQ+CitBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVk
IGluZmVycmVkSW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBGdW5jdGlv
blJhcmVEYXRhKiBmdW5jdGlvblJhcmVEYXRhKQogewogICAgIEFTU0VSVCghbV9hbGxvY2F0b3Ip
OwogICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUpOwotICAgIEFTU0VSVCghbV9wcm90b3R5cGUpOwot
ICAgIEFTU0VSVCghbV9pbmxpbmVDYXBhY2l0eSk7CiAKICAgICAvLyBGSVhNRTogVGVhY2ggY3Jl
YXRlX3RoaXMncyBmYXN0IHBhdGggaG93IHRvIGFsbG9jYXRlIHBvbHkKICAgICAvLyBwcm90byBv
YmplY3RzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTE3CkBA
IC01Niw4ICs1NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEZpbmFsT2JqZWN0VHlw
ZSk7CiAgICAgICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOwogICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIG1fcHJv
dG90eXBlLnNldCh2bSwgb3duZXIsIHByb3RvdHlwZSk7Ci0gICAgICAgICAgICBtX2lubGluZUNh
cGFjaXR5ID0gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8RGVyaXZlZCo+KHRoaXMpLT5zZXRQcm90b3R5cGUodm0sIG93bmVyLCBwcm90b3R5cGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzOCwxMSArMTM2LDExIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5pdGlhbGl6ZVBy
b2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKIAog
ICAgIG1fc3RydWN0dXJlLnNldCh2bSwgb3duZXIsIHN0cnVjdHVyZSk7Ci0gICAgbV9wcm90b3R5
cGUuc2V0KHZtLCBvd25lciwgcHJvdG90eXBlKTsKLSAgICBtX2lubGluZUNhcGFjaXR5ID0gaW5s
aW5lQ2FwYWNpdHk7CisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KHRoaXMpLT5zZXRQcm90b3R5
cGUodm0sIG93bmVyLCBwcm90b3R5cGUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHVuc2lnbmVkIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiB2
bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+CitBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6
cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChWTSYgdm0sIEpTT2JqZWN0KiBwcm90b3R5cGUp
CiB7CiAgICAgaWYgKHByb3RvdHlwZSA9PSBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSktPm9i
amVjdFByb3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAppbmRleCA4YWM2MDNlM2NjNWY3YjE5MzU0NGJiMGNmZjA4NDhkZGIy
MjA3NGNlLi40NDI3ZGQ5OGE0MDcxNmY5ZTM4YzQ2OWU3MmNmMGI2MGU5Y2M1OTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMTEsMTAgKzExMSw2IEBAIGV4
dGVybiBjb25zdCB1bnNpZ25lZCBvcGNvZGVMZW5ndGhzW107CiAgICAgbWFjcm8oT3BUYWlsQ2Fs
bEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdFZhcmFyZ3MpIFwKICAg
ICBtYWNybyhPcEdldEJ5VmFsKSBcCi0gICAgbWFjcm8oT3BDYWxsKSBcCi0gICAgbWFjcm8oT3BU
YWlsQ2FsbCkgXAotICAgIG1hY3JvKE9wQ2FsbEV2YWwpIFwKLSAgICBtYWNybyhPcENvbnN0cnVj
dCkgXAogICAgIG1hY3JvKE9wSW5CeVZhbCkgXAogICAgIG1hY3JvKE9wUHV0QnlWYWwpIFwKICAg
ICBtYWNybyhPcFB1dEJ5VmFsRGlyZWN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgKaW5kZXggZmEwZDNiMDdhM2M0NDZiZDFhMDAzMGU1MTI0MTg0
ZTNiNDRmYWU5NS4uNDg4M2I0YjNkMjFiYmZjOGVkNjZjZmI5NDc1OTBkNzA5NWFiNjFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAtNDQs
MTQgKzQ0LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB0b3RhbE51bWJlck9mQnVja2V0cyA9IG51bWJlck9mQnVja2V0cyArIG51bWJlck9m
U3BlY0ZhaWxCdWNrZXRzOwogICAgIAogICAgIFZhbHVlUHJvZmlsZUJhc2UoKQotICAgICAgICA6
IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkKLSAgICAgICAgICAgIG1fYnVja2V0c1tp
XSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIH0KLSAgICAKLSAgICBWYWx1ZVBy
b2ZpbGVCYXNlKGludCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpCiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKQEAgLTg2LDggKzc4LDEwIEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mU2FtcGxlcygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBtX251bWJl
ck9mU2FtcGxlc0luUHJlZGljdGlvbjsKKyAgICAgICAgcmV0dXJuIG51bWJlck9mU2FtcGxlcygp
ICsgaXNTYW1wbGVkQmVmb3JlKCk7CiAgICAgfQorCisgICAgYm9vbCBpc1NhbXBsZWRCZWZvcmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZWRpY3Rpb24gIT0gU3BlY05vbmU7IH0KICAgICAKICAgICBi
b29sIGlzTGl2ZSgpIGNvbnN0CiAgICAgewpAQCAtMTA5LDcgKzEwMyw3IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAg
ICB7Ci0gICAgICAgIG91dC5wcmludCgic2FtcGxlcyA9ICIsIHRvdGFsTnVtYmVyT2ZTYW1wbGVz
KCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKKyAg
ICAgICAgb3V0LnByaW50KCJzYW1wbGVkIGJlZm9yZSA9ICIsIGlzU2FtcGxlZEJlZm9yZSgpLCAi
IGxpdmUgc2FtcGxlcyA9ICIsIG51bWJlck9mU2FtcGxlcygpLCAiIHByZWRpY3Rpb24gPSAiLCBT
cGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CiAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVl
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7
ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1
Y2tldHNbaV0pOwpAQCAtMTMzLDcgKzEyNyw2IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsK
ICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uKys7CiAg
ICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgc3BlY3VsYXRpb25Gcm9t
VmFsdWUodmFsdWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CkBAIC0xNDIsMTcgKzEzNSwxMyBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAgfQog
ICAgIAotICAgIGludCBtX2J5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICB1
bnNpZ25lZCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbiB7IDAgfTsKLSAgICAKLSAgICBT
cGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwotICAgIAogICAgIEVuY29k
ZWRKU1ZhbHVlIG1fYnVja2V0c1t0b3RhbE51bWJlck9mQnVja2V0c107CisKKyAgICBTcGVjdWxh
dGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwogfTsKIAogc3RydWN0IE1pbmltYWxW
YWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwwPiB7CiAgICAgTWluaW1hbFZh
bHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KCkgeyB9Ci0gICAgTWluaW1hbFZhbHVl
UHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHVuc2lnbmVkIGxvZ051bWJlck9mQnVja2V0c0Fy
Z3VtZW50PgpAQCAtMTYzLDIzICsxNTIsMTIgQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHMgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWIKICAg
ICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+
KCkKICAgICB7CiAgICAgfQotICAgIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMo
aW50IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICA6IFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dO
dW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oYnl0ZWNvZGVPZmZzZXQpCi0gICAgewotICAgIH0KIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7CiAgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9m
ZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zm
c2V0KSB7IH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50IGdldFZhbHVl
UHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFQqIHZhbHVlUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gdmFs
dWVQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwotfQotCiAvLyBUaGlzIGlzIGEgbWluaSB2YWx1
ZSBwcm9maWxlIHRvIGNhdGNoIHBhdGhvbG9naWVzLiBJdCBpcyBhIGNvdW50ZXIgdGhhdCBnZXRz
CiAvLyBpbmNyZW1lbnRlZCB3aGVuIHdlIHRha2UgdGhlIHNsb3cgcGF0aCBvbiBhbnkgaW5zdHJ1
Y3Rpb24uCiBzdHJ1Y3QgUmFyZUNhc2VQcm9maWxlIHsKQEAgLTE5OCw4ICsxNzYsNyBAQCBpbmxp
bmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFJhcmVDYXNlUHJvZmlsZSog
cmFyZUNhc2VQcm9maWxlKQogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQ7CiB9CiAKLXN0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIHsKLSAgICBWYWx1ZVBy
b2ZpbGUgbV9wcm9maWxlOworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgOiBwdWJsaWMg
VmFsdWVQcm9maWxlIHsKICAgICBpbnQgbV9vcGVyYW5kOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NTA1YWQ1NzkzNDcw
MjExOWM1OGZiNjc4N2Q5YTZjZDg4MzRkM2M1Li5iNjg2NWY3YWNhYzcxMjBkOGYxNmE1YjRhNjQ1
NzA2YmVkNmEwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNDc5NSw3ICs0Nzk1LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewog
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0VGhpcygpOwogICAgICAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKGNvZGVC
bG9jayk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOworICAgICAgICAgICAg
U3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGNh
Y2hlZFN0cnVjdHVyZUlEKQorICAgICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0t
PmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7CiAgICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKICAgICAgICAgICAg
ICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCiAgICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0
dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCkt
Pm1ldGhvZFRhYmxlLnRvVGhpcwpAQCAtNjAxMSw3ICs2MDE0LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgICAgIGJ1ZmZl
ci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQp
OwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmls
ZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5p
c0xvY2FsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVu
ZChwcmVkaWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlZTUzZDYxZDdmNzU0Njc4MWE5
MDQ2NzYwZjJhNWE5ZWYzOGI2ZWQ1Li4yNWM0YzA5MGQ2MDAxZTZiYzExZjQwYjY0NmI5ZGY2NzZi
NmMwNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTM1NSw3ICszNTUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcgogICAgIGlmIChjb25z
dHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIGF1dG8g
cmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURh
dGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUgPSByYXJlRGF0YS0+b2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKTsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKiBh
bGxvY2F0aW9uUHJvZmlsZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1
cmUoKTsKICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGRlYmQwM2ViMWVjNjg1ZDA3YzBhNzViMWU4ZDNmYTRhOWU1YzY3NTIuLmQwNDEwYjM1ZDM5
MDE3ZjgwZGI1OTA1ZWQ0OTJkM2UzMzg2OGJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjU2NSwxNCArMTI1NjUsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVRoaXMoTm9kZSogbm9kZSkKICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwogICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikp
OwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsK
LSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rp
b25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2Nh
dG9yR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRh
R1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJl
KCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgSklUQWxsb2Nh
dG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBz
Y3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURh
dGFHUFIpOwotICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQ
UiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIGlubGlu
ZUNhcGFjaXR5R1BSKTsKKyAgICBtX2ppdC5sb2FkOChKSVRDb21waWxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIGlubGluZUNhcGFj
aXR5R1BSKTsKICAgICBtX2ppdC5lbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0R1BS
LCBpbmxpbmVDYXBhY2l0eUdQUik7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAppbmRleCA4OTk5NWU2NzQ4ZDNmMjQyYTVlMDIwNWNhMGNhZTE2NDU4Mzk3
ZTMwLi43MGM5OTNhNzE4YTc3MWYxNjFkY2YyYmUzNDIxMmYwOTE4ZWI5ZjBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aApAQCAtNTcsOCArNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNl
dE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1
bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAg
IG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVj
dEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAotICAg
IG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0
dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAorICAgIG1h
Y3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVE
YXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwg
R2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYWZjNGIyOTUzZDMyMjVkZTA4NjE2
NzI3NDczY2FkN2NlYzNkYzI1OS4uYzA2NDM4N2JlYTYwYzQ5Mzg3M2ExZTkxZTU1ZDRkNTU5Zjdh
Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0lu
Zm8qKQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwKTsKICAgICAgICAg
SnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAg
c3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlu
a0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAg
ICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGI0MmU5OTdhYWI2M2RiYjE1MmRhZTI0MmQ3Yjk0ZjBl
MzRlOTM2OTcuLmFmNjA4ZjAzMTBkMThlYjJmYmJlMmRkNjg0YjJlNWNlZmQ4M2I3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTE2MCw3ICsxNjAs
NyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJ
bmZvKikKICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJlZ1QxKTsKICAgICAgICAgSnVtcCBk
b25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVn
VDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgc3RvcmUz
MihyZWdUMSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAg
ZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggMThjZWJhNmFkOTBiODA4YzRlMDRmZmQxOGYxY2I5MjY1MjJmNDI2Mi4u
ZjA1ZGJhOTY0YjJlNjc3YTg5M2IxZGQxZWZiYWRjMjRjM2U4M2E0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC03MDcsNyArNzA3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CiAgICAgICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAg
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGUmPihwcm9m
aWxlKSk7CiAgICAgICAgIH0pOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKQEAg
LTg3OCwxNSArODc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVy
ZT4qIGNhY2hlZFN0cnVjdHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBT
dHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1
cmVJRDsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0Lm9mZnNl
dCgpLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwog
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBGaW5hbE9iamVjdFR5cGUp
KTsKLSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNo
ZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwog
fQogCkBAIC05MDgsOCArOTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVS
ZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSksIGFsbG9jYXRvclJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVn
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJl
Zyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJv
dG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKIAogICAgIGxvYWRQ
dHIoY2FjaGVkRnVuY3Rpb24sIGNhY2hlZEZ1bmN0aW9uUmVnKTsKICAgICBKdW1wIGhhc1NlZW5N
dWx0aXBsZUNhbGxlZXMgPSBicmFuY2hQdHIoRXF1YWwsIGNhY2hlZEZ1bmN0aW9uUmVnLCBUcnVz
dGVkSW1tUHRyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKSk7CkBAIC05MTks
OSArOTE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgYXV0
byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JSZWcs
IHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3Moc2NyYXRjaFJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgc2NyYXRj
aFJlZyk7Ci0gICAgbG9hZDMyKEFkZHJlc3Moc2NyYXRjaFJlZywgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIHNjcmF0Y2hSZWcpOworICAgIGxvYWQ4KEFk
ZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBz
Y3JhdGNoUmVnKTsKICAgICBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBz
Y3JhdGNoUmVnKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDI1YTljOGYzNTBhZGMzZTY5NDQw
ZGFjYTM0ZDgyNDIyZWU0ZjE4MmMuLjk3YWUyZmJlNWIyZjM3NTk1NDQ0OGRlODVhODExMThkZWQ4
OWQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
UmVncyByZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlKTsKICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpAQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhj
YWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsK
ICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAg
bG9hZDMyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURh
dGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0
dXJlUmVnKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0
aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CiAKICAgICBs
b2FkUHRyKGNhY2hlZEZ1bmN0aW9uLCBjYWNoZWRGdW5jdGlvblJlZyk7CiAgICAgSnVtcCBoYXNT
ZWVuTXVsdGlwbGVDYWxsZWVzID0gYnJhbmNoUHRyKEVxdWFsLCBjYWNoZWRGdW5jdGlvblJlZywg
VHJ1c3RlZEltbVB0cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSkpOwpAQCAt
MTAzMSw5ICsxMDMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0
b3JSZWcsIHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwot
ICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRk
cmVzcyhzY3JhdGNoUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNo
UmVnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRk
cmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNj
cmF0Y2hSZWcpOwogICAgIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNj
cmF0Y2hSZWcpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFN0b3JlQ2Vs
bChieXRlY29kZS5tX2RzdC5vZmZzZXQoKSwgcmVzdWx0UmVnKTsKQEAgLTEwNDMsNyArMTA0MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVj
dHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJRCogY2Fj
aGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKICAgICBpbnQg
dGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCk7CiAKICAgICBlbWl0TG9h
ZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CkBAIC0xMDUxLDcgKzEwNDksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNoZWRT
dHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDAsIHJlZ1QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDVhMDAzYWFmMzAwMzFmZDM2MWRmNDBiN2RlN2EyNmIyNTZmOGVjZDgu
LjEyYjc4YWFkZjQ1ODlkZDQ4M2NjODc5MmQyZDYzODYzNTE5OTBlZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAg
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVBy
b2ZpbGUoRXhlY1N0YXRlKiBleGVjLAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBtZXRhZGF0YS5t
X2J1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
LSAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAg
IHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIo
cHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggNTE5YWQ3YWVjMzY0YWJhOTI2NjAxNGMyZDNlYjQ2MmQyNTliMzcxMy4uOWQ2MjE0
ODFmNzc0NzRlZmI4MzFiZDRlNWYxZjU4MjI5ZTMzMjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU4Myw3ICs1ODMsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVn
KTsKICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1v
ZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZSks
IFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVh
bCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsK
ICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgJm1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpOwogICAg
ICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyZTkwYzcwMWRhMWVj
NzViMTgyMmFhNmQ3YjNiZTdjNzQyNmYyNWI3Li4yNTRmY2RjZGRhZmQ2MjRjMDc1ODAxMDc2Yzgw
N2Q4Nzc3ZjFmZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTc0MCwxOSArNzQwLDI0IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJ
ZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBJbnN0cnVjdGlv
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAKICAg
ICBpZiAoc2xvdC5pc1Vuc2V0KCkpIHsKLSAgICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJ
ZE1vZGU6OlVuc2V0OworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0
QnlJZE1vZGU6OlVuc2V0OwogICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1v
ZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKIAotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQ7CisgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
IEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ7IC8vIFRoaXMgbXVzdCBiZSBmaXJzdCBzZXQuIEluIDY0
Yml0IGFyY2hpdGVjdHVyZSwgdGhpcyBmaWVsZCBpcyBzaGFyZWQgd2l0aCBwcm90b0xvYWRNb2Rl
LmNhY2hlZFNsb3QuCiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5z
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldCA9IG9mZnNldDsKLSAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPSBzbG90LnNsb3RCYXNlKCk7CiAg
ICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgcG9pbnRlciB3aWxsIHJlbWFpbiB2YWxpZCBiZWNhdXNl
IGl0IHdpbGwgYmUgY2xlYXJlZCBieSBlaXRoZXIgYSB3YXRjaHBvaW50IGZpcmUgb3IKICAgICAv
LyBkdXJpbmcgR0Mgd2hlbiB3ZSBjbGVhciB0aGUgTExJbnQgY2FjaGVzLgogICAgIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdCA9IHNsb3Quc2xvdEJhc2Uo
KTsKKworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRN
b2RlOjpQcm90b0xvYWQpOworICAgIEFTU0VSVCghbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0
Q291bnRGb3JMTEludENhY2hpbmcpOworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEID09IHN0cnVjdHVyZS0+aWQoKSk7CisgICAgQVNT
RVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0ID09
IG9mZnNldCk7CisgICAgQVNTRVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuY2FjaGVkU2xvdCA9PSBzbG90LnNsb3RCYXNlKCkpOwogfQogCiAKQEAgLTc3NSw4ICs3ODAs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICAm
JiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBhdXRvIG1vZGUgPSBtZXRhZGF0YS5tX21v
ZGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9k
ZTo6RGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtODA0LDEyICs4MDgsMTIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZCkKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBv
dXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0OworICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
IEdldEJ5SWRNb2RlOjpEZWZhdWx0OwogICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAg
Ly8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAg
ICAgICAgICBtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsK
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KCkpIHsKQEAgLTgyMCwyMSArODI0LDIyIEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVk
T2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChz
bG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAo
VU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcg
JiYgKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSkpIHsKICAgICAgICAgICAgIEFT
U0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEo
LS1tZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICgh
KC0tbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAg
ICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGV4ZWMsIHZtLCBwYywgbWV0
YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgaXNKU0FycmF5KGJhc2VWYWx1
ZSkKICAgICAgICAgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7Ci0gICAg
ICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aDsKLSAgICAgICAg
bmV3ICgmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSkgQXJyYXlQcm9maWxlKGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKKyAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Cisg
ICAgICAgIG5ldyAoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJh
eVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAKICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90
eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgfQogCiAgICAgTExJTlRfUFJPRklMRV9W
QUxVRShyZXN1bHQpOwpAQCAtMTUwMiwxMiArMTUwNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luCiAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKIAogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y2FsbGVyQ29kZUJsb2NrLT5tX2xvY2spOwotCi0gICAgICAgICAgICAgICAgaWYgKGNhbGxMaW5r
SW5mby0+aXNPbkxpc3QoKSkKLSAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1v
dmUoKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQodm0sIGNhbGxl
ckNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgaW50ZXJuYWxGdW5j
dGlvbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9
IGNvZGVQdHI7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJD
b2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24sIGNvZGVQdHIpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBKU0VudHJ5UHRyVGFnKTsKQEAgLTE1NTAsMTIgKzE1NTAsNyBAQCBpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbgogICAgICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOwogCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY2FsbGVyQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAKLSAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxp
c3QoKSkKLSAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7Ci0gICAgICAgIGNhbGxM
aW5rSW5mby0+Y2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUpOwotICAgICAg
ICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBj
YWxsZWUpOwotICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ZSwgY29kZVB0cik7CiAgICAgICAgIGlmIChjb2RlQmxvY2spCiAgICAgICAgICAgICBjb2RlQmxv
Y2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICB9CkBAIC0xOTI4
LDcgKzE5MjMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRj
aCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAg
cHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUu
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5t
X29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICBMTElOVF9FTkQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KaW5kZXggYzc3ZmI3ZTM2YmNkZTUzZWEzNGFkZTdlNDgzOTA2YWVjNWJmMzYzMi4u
MDg3ZGE0ODliZjYzZmNlNDk5ZGQ0OGIyODY1ZGJlOWE5ZTE5ZTE0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTc0NSw3ICs3NDUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9w
VG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsCiAgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0
MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICBsb2FkcCBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIK
KyAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0
MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93
CiAgICAgZGlzcGF0Y2goKQogCkBAIC0xODIzLDcgKzE4MjMsNyBAQCBtYWNybyBhcnJheVByb2Zp
bGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKICAgICBiaW5lcSBUaGlzQXJndW1lbnRPZmZz
ZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIENlbGxUYWcsIC5kb25lCiAgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKICAgICBsb2Fk
aSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MAotICAgIHN0b3JlaSB0MCwgJW9wY29kZVN0
cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVd
CisgICAgc3RvcmVpIHQwLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgogZW5kCiAK
QEAgLTE4MzYsNyArMTgzNiw3IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93
UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIGVuZCwg
bWV0YWRhdGEpCiAKICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5jYWxsZWVbdDVdLCB0MgorICAg
ICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2Fs
bGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKICAgICAgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykK
ICAgICAgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdwogICAgICAgICBnZXR1KHNpemUsIG9w
Y29kZVN0cnVjdCwgbV9hcmd2LCB0MykKQEAgLTE4NDksOCArMTg0OSw4IEBAIG1hY3JvIGNvbW1v
bkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwg
cHJvbG9ndWUpCiAgICAgICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZz
ZXRbdDNdCiAgICAgICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAg
ICAgICAgIG1vdmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0
LCBKU0VudHJ5UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2Rl
U3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5m
by5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIHByZXBhcmVD
YWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJn
ZXRGdW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5
UHRyVGFnKQogCiAgICAgLm9wQ2FsbFNsb3c6CiAgICAgICAgIHNsb3dQYXRoRm9yQ2FsbChzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFz
bSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNt
CmluZGV4IGM4MDc0MzU4NDUwOWNmZWUzMDk5M2E2ZWIxMTI1NWQyMTMzNTFjNjIuLjgxMTlkYTJj
YmZmN2FiNDgyMDMyYjcyYWQzMzdiNTFhYmZiMTljMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC03MDEsMTAg
KzcwMSwxMCBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNy
byAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsCiAgICAgbG9hZHEgW2NmciwgdDAsIDhd
LCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNrLCAub3BUb1RoaXNTbG93CiAgICAgYmJuZXEgSlND
ZWxsOjptX3R5cGVbdDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2Fk
U3RydWN0dXJlV2l0aFNjcmF0Y2godDAsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXSwgdDEKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgbG9hZHAgT3BU
b1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIHQyCi0gICAgYnBuZXEgdDEs
IHQyLCAub3BUb1RoaXNTbG93CisgICAgbG9hZGkgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hl
ZFN0cnVjdHVyZUlEW3QyXSwgdDIKKyAgICBiaW5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAg
ICBkaXNwYXRjaCgpCiAKIC5vcFRvVGhpc1Nsb3c6CkBAIC0xMjg4LDcgKzEyODgsNyBAQCBlbmQp
CiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChz
aXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQyLCB0
MSkKLSAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVbdDJdLCB0MQorICAgIGxv
YWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQogICAg
IGdldChtX2Jhc2UsIHQwKQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQw
LCB0MywgLm9wR2V0QnlJZFNsb3cpCiAKQEAgLTE5MTgsNyArMTkxOCw3IEBAIG1hY3JvIGFycmF5
UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogICAgIGxvYWRxIFRoaXNBcmd1bWVu
dE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLmRvbmUKICAg
ICBsb2FkaSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MwotICAgIHN0b3JlaSB0MywgJW9w
Y29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJl
SURbdDVdCisgICAgc3RvcmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgog
ZW5kCiAKQEAgLTE5MzEsNyArMTkzMSw3IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1l
LCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAg
IGVuZCwgbWV0YWRhdGEpCiAKICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9h
ZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5jYWxsZWVbdDVdLCB0
MgorICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZv
Lm1fY2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKICAgICAgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShzaXplLCB0MCwgdDMpCiAgICAgICAgIGJxbmVxIHQzLCB0Miwg
Lm9wQ2FsbFNsb3cKICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMp
CkBAIC0xOTQzLDggKzE5NDMsOCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xv
d1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQogICAgICAgICBzdG9yZWkgdDIs
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAot
ICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJ
bmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAg
ICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVv
cGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRb
dDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6
TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMs
IHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bj
b2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENh
bGxTbG93OgogICAgICAgICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggODU0NDE4ODgzNmZlNjg5Y2Q4YTY3
ZDJiZmY0MzcyNTIxNzNjZjViZS4uNGU3OGE0OGQ2ZDE5ZWI5YjA2ZDNjOWVkMDc0ZTk1ODExMmQw
OGE3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuY3BwCkBAIC0yNDIsNyArMjQyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV90aGlzKQogICAgICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldFdpdGhvdXRXcml0ZUJhcnJp
ZXIoSlNDZWxsOjpzZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpOwogCiAgICAgICAgIHNpemVf
dCBpbmxpbmVDYXBhY2l0eSA9IGJ5dGVjb2RlLm1faW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlKiBhbGxvY2F0aW9uUHJvZmlsZSA9IGNvbnN0cnVjdG9yLT5l
bnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+
b2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKTsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVXaXRoUHJvdG90eXBlKiBhbGxvY2F0aW9uUHJvZmlsZSA9IGNvbnN0cnVjdG9yLT5lbnN1cmVS
YXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+b2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUoKTsKICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlQXNzZXJ0Tm9F
eGNlcHRpb24oKTsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhbGxvY2F0aW9uUHJv
ZmlsZS0+c3RydWN0dXJlKCk7CiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSk7CkBAIC0yNzIsMTYgKzI3MiwxNyBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfdG9fdGhpcykKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGV4ZWMpOwogICAgIEpTVmFsdWUgdjEgPSBHRVQoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUo
KTsKICAgICBpZiAodjEuaXNDZWxsKCkpIHsKLSAgICAgICAgU3RydWN0dXJlKiBteVN0cnVjdHVy
ZSA9IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICBTdHJ1Y3R1cmUqIG90aGVy
U3RydWN0dXJlID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAgIGlm
IChteVN0cnVjdHVyZSAhPSBvdGhlclN0cnVjdHVyZSkgewotICAgICAgICAgICAgaWYgKG90aGVy
U3RydWN0dXJlKQorICAgICAgICBTdHJ1Y3R1cmVJRCBteVN0cnVjdHVyZUlEID0gdjEuYXNDZWxs
KCktPnN0cnVjdHVyZUlEKCk7CisgICAgICAgIFN0cnVjdHVyZUlEIG90aGVyU3RydWN0dXJlSUQg
PSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOworICAgICAgICBpZiAobXlTdHJ1Y3R1cmVJ
RCAhPSBvdGhlclN0cnVjdHVyZUlEKSB7CisgICAgICAgICAgICBpZiAob3RoZXJTdHJ1Y3R1cmVJ
RCkKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZs
aWN0ZWQ7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5zZXQodm0sIGV4
ZWMtPmNvZGVCbG9jaygpLCBteVN0cnVjdHVyZSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEID0gbXlTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIHZtLmhlYXAud3Jp
dGVCYXJyaWVyKGV4ZWMtPmNvZGVCbG9jaygpLCB2bS5nZXRTdHJ1Y3R1cmUobXlTdHJ1Y3R1cmVJ
RCkpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNT
dGF0dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVj
dHVyZS5jbGVhcigpOworICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsK
ICAgICB9CiAgICAgLy8gTm90ZTogV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgdmFsdWUgcHJvZmls
aW5nIGhlcmUgb24gdGhlIHNsb3cgcGF0aC4gVGhlIGZhc3QgcGF0aAogICAgIC8vIGp1c3QgcmV0
dXJucyB0aGUgaW5wdXQgdG8gdG9fdGhpcyBpZiB0aGUgc3RydWN0dXJlIGNoZWNrIHN1Y2NlZWRz
LiBJZiB0aGUgc3RydWN0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblJhcmVEYXRhLmgKaW5kZXggYTZhNmRmMDBkNDU0Nzg5ODAxOTA0ZmY1ZWVjZWEyMmJk
ZGM3OTIxYy4uMmVkYTMyYmEzODUzNjEwZDAxYTk0NWE2YTQ5ZjVmYTQwNGMzYjM0OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAt
NjYsNyArNjYsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25SYXJlRGF0YSwgbV9v
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSk7CiAgICAgfQogCi0gICAgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiAmbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICB9CkBAIC0xNDUsNyAr
MTQ1LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewog
ICAgIC8vCiAgICAgLy8gV2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgMSkgc2luY2UgdGhpcyBt
ZW1vcnkgaXMgcmFyZSBhbmQgc21hbGwgaW4gdG90YWwuIDIpIGlzIHVuZm9ydHVuYXRlIGJ1dCBp
cwogICAgIC8vIHByb2JhYmx5IG91dHdlaWdoZWQgYnkgdGhlIGNvc3Qgb2YgMykuCi0gICAgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICBPYmpl
Y3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRj
aHBvaW50OwogICAgIEludGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSBtX2ludGVybmFs
RnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2JvdW5kRnVuY3Rpb25TdHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9I
ZWFwVmVyaWZpZXIuY3BwCmluZGV4IGQ3NzNkODU1ZmZjMmUwMTU0OGVjZjZkYWE4Y2Q4ZDU1NTkx
YzhjOTYuLjA1ZTQwOTliMTY0YzZhOGExZDcxMzc0Y2ZkYzQ1YjYyZDgzODYwZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCkBAIC0zMzAsNyArMzMw
LDcgQEAgYm9vbCBIZWFwVmVyaWZpZXI6OnZhbGlkYXRlSlNDZWxsKFZNKiBleHBlY3RlZFZNLCBK
U0NlbGwqIGNlbGwsIENlbGxQcm9maWxlKiBwcm8KICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBqc0R5bmFtaWNDYXN0PENvZGVCbG9jayo+KHZtLCBjZWxsKTsKICAgICAgICAgaWYgKFVO
TElLRUxZKGNvZGVCbG9jaykpIHsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0g
ICAgICAgICAgICBjb2RlQmxvY2stPmZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmls
ZSYgdmFsdWVQcm9maWxlKSB7CisgICAgICAgICAgICBjb2RlQmxvY2stPmZvckVhY2hWYWx1ZVBy
b2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxlLCBib29sKSB7CiAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IFZhbHVlUHJvZmlsZTo6dG90YWxOdW1iZXJP
ZkJ1Y2tldHM7ICsraSkgewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKHZhbHVlUHJvZmlsZS5tX2J1Y2tldHNbaV0pOwogICAgICAgICAgICAgICAg
ICAgICBpZiAoIXZhbHVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370136</attachid>
            <date>2019-05-17 13:03:21 -0700</date>
            <delta_ts>2019-05-17 13:43:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517130320.patch</filename>
            <type>text/plain</type>
            <size>77946</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5mZTVlZDdlOGUwZWE5NmQ2
YzllZGNlNGVkY2RmZmEzZTVkOTFlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gc2hyaW5rIE1ldGFkYXRhLiBUaGlzIHBhdGNoIGZpcnN0IGZvY3VzIG9uIGxvdyBoYW5naW5n
IGZydWl0czogaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhbmdlIHJlbW92aW5nIE9TUiBleGl0
IEpTVmFsdWUgaW4gVmFsdWVQcm9maWxlLgorICAgICAgICBUaGlzIHBhdGNoIHVzZXMgZmFuY3kg
Yml0IGp1Z2dsaW5nICYgbGV2ZXJhZ2VzIG5pY2UgZGF0YSB0eXBlcyB0byByZWR1Y2UgTWV0YWRh
dGEsIGFzIGZvbGxvd3MuCisKKyAgICAgICAgMS4gVmFsdWVQcm9maWxlIGlzIHJlZHVjZWQgZnJv
bSAzMiB0byAyNC4gSXQgcmVkdWNlcyBNZXRhZGF0YSB1c2luZyBWYWx1ZVByb2ZpbGUuCisgICAg
ICAgIDIuIEFycmF5UHJvZmlsZSBpcyByZWR1Y2VkIGZyb20gMTYgdG8gMTIuIERpdHRvLgorICAg
ICAgICAzLiBPcENhbGw6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA4OCB0byA2NC4KKyAgICAg
ICAgNC4gT3BHZXRCeUlkOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNTYgdG8gNDAuCisgICAg
ICAgIDUuIE9wVG9UaGlzOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNDggdG8gMzIuCisgICAg
ICAgIDYuIE9wTmV3T2JqZWN0OjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gMzIgdG8gMTYuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBnYXRoZXJlZCBkYXRhLCBpdCBzaG91bGQgcmVkdWNl
IDEtMk1CIGluIHN0ZWFkeSBzdGF0ZSBpbiBHbWFpbCwgbXVjaCBtb3JlIGluIHBlYWsgbWVtb3J5
LCB+MSBNQiBpbiB0aGUgc3RhdGUganVzdCBhZnRlciBmdWxsIEdDLgorICAgICAgICBJdCBhbHNv
IGltcHJvdmVzIFJBTWlmaWNhdGlvbiBieSAwLjMlICg2IHJ1bnMpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICBXZSB1c2UgUHJv
dG9Mb2FkJ3MgSlNPYmplY3QncyBoaWdoIGJpdHMgdG8gZW1iZWQgaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgYW5kIG1vZGUsIHNpbmNlIHRoZXkKKyAgICAgICAgYXJlIGFsd2F5cyB6ZXJvIGZvciBQ
cm90b0xvYWQgbW9kZS4KKworICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxM
aW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgSW4gTExJbnRDYWxsTGlua0luZm8sIHdlIGFsd2F5cyBzZXQg
dGhlIHNhbWUgdmFsdWUgdG8gbGFzdFNlZW5DYWxsZWUgYW5kIGNhbGxlZS4gQnV0IGxhdGVyLCBj
YWxsZWUgY2FuIGJlIGNsZWFyZWQuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgd2UgY2FuIHJlcHJl
c2VudCB0aGVtIGluIG9uZSB2YWx1ZSArIGNsZWFyZWQgZmxhZy4gV2UgZW5jb2RlIHRoaXMgZmxh
ZyBpbnRvIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBjYWxsZWUgY2VsbCBzbworICAgICAgICB0aGF0
IHdlIGNhbiBtYWtlIHRoZW0gb25lIHBvaW50ZXIuIFdlIGFsc28gdXNlIFBhY2tlZFJhd1NlbnRp
bmVsTm9kZSB0byBnZXQgc29tZSBzcGFjZSwgYW5kIGVtYmVkIEFycmF5UHJvZmlsZSBpbnRvIHRo
aXMgc3BhY2UKKyAgICAgICAgdG8gZ2V0IGZ1cnRoZXIgbWVtb3J5IHJlZHVjdGlvbi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpidWZmZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6b2Zmc2V0T2ZBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpjbGVhcik6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpwcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2Fw
YWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5saW5lQ2FwYWNpdHkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46Omlu
aXRpYWxpemVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICBPcE5ld09iamVjdCdzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBwcm90b3R5cGUuIFNvIHdlIGhhdmUg
dHdvIHZlcnNpb25zIG5vdywgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgYW5kIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZQorICAgICAgICB0byBjdXQgb25lIHBvaW50ZXIuIFdl
IGFsc28gcmVtb3ZlIGlubGluZSBjYXBhY2l0eSBzaW5jZSB0aGlzIGNhbiBiZSByZXRyaWV2ZWQg
ZnJvbSBTdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRv
dGFsTnVtYmVyT2ZTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6aXNTYW1wbGVkQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVBy
b2ZpbGVCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBp
cyBubyBsb25nZXIgdXNlZC4gQW5kIHNhbXBsZSBjb3VudCBpcyBub3QgdXNlZCBlZmZlY3RpdmVs
eS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiB0
b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlk
YXRlSlNDZWxsKToKKwogMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2lu
dGVycyBpbiBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCmluZGV4IGMwMGFlZjIxYjZlYmI2MTllOTFjNzQ2YWY0ZmIwOWM1ODRmZDY2
YmIuLjNlMTUwYTAxMjM5NmIxMjgyNDUyOGE1ZTlmMmI5ODM3ZThjN2RlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0zMywxMCAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLWNvbnN0
IGNoYXIqIGNvbnN0IEFycmF5UHJvZmlsZTo6c190eXBlTmFtZSA9ICJBcnJheVByb2ZpbGUiOwot
I2VuZGlmCi0KIC8vIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBvcmRlciBvZiBUeXBlZEFycmF5VHlw
ZS4KIGNvbnN0IEFycmF5TW9kZXMgdHlwZWRBcnJheU1vZGVzW051bWJlck9mVHlwZWRBcnJheVR5
cGVzRXhjbHVkaW5nRGF0YVZpZXddID0gewogICAgIEludDhBcnJheU1vZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0
MmE1NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4
YzBlOGRlMjM3YjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFy
cmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAg
IEFycmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFy
cmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjM4LDE2ICsy
MjksMTEgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKICAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSA9PSBzX3R5cGVOYW1lOyB9Ci0jZW5kaWYKLQogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsg
Ly8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVj
aWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBp
dCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2lj
YWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdl
KSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1w
bGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwpAQCAtMjU1LDEzICsyNDEs
NyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OwotCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVOYW1lOwotICAg
IGNvbnN0IGNoYXIqIG1fdHlwZU5hbWUgeyBzX3R5cGVOYW1lIH07Ci0jZW5kaWYKIH07Ci0KLXR5
cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgND4gQXJyYXlQcm9maWxlVmVjdG9y
Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMDY5NWEyNTA3YjYyMzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uY2Rl
ZTU2OWM4ZDAyMGIwZDc5M2NlODRhZTg4YWM1ZGJlMWI1MTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAK
ICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
KyAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNT
dGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KQEAgLTQxNCw4ICs0MTQsNiBAQAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAg
aGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CkBAIC03MDYsNyArNzA0LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBA
IC03MTksNyArNzE2LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxM
aW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03MzIs
NyArNzI4LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03ODcsNyArNzgy
LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uNzlmMDZkYzMyNTNhMjUxYzIyOWQ0MjUwMWE3MjMxNDdmNzQzYmQ0YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQg
PyBudWxscHRyIDogdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2Fj
aGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dGKCJDbGVhcmluZyBMTElu
dCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSAwOwogICAgICAg
ICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRhZGF0YS5tX3RvVGhpc1N0
YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxp
bmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2FsbExpbmtJbmZvKFsmXShM
TEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAgIGlmIChjYWxsTGlua0lu
Zm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8uY2FsbGVlLmdl
dCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2VkKCkgJiYgIXZtLmhlYXAu
aXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAgICAgICAgaWYgKE9wdGlv
bnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTElu
dCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAgY2FsbExpbmtJbmZvLnVu
bGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5rSW5mby5sYXN0U2VlbkNh
bGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUuZ2V0
KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAmJiAhdm0uaGVhcC5pc01h
cmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAgICAgICAgICBjYWxsTGlu
a0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQogCkBAIC0yNTc1LDE3ICsy
NTY4LDI0IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJheVByb2ZpbGUoY29uc3Qg
Q29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0CiB7CiAgICAgYXV0byBpbnN0cnVjdGlv
biA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAgICBzd2l0Y2ggKGluc3Ry
dWN0aW9uLT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwKKyNkZWZpbmUgQ0FTRTEo
T3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAogICAgICAgICByZXR1cm4gJmluc3RydWN0
aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmlsZTsKIAotICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ0FTRSkKLSN1bmRlZiBDQVNFCisjZGVmaW5l
IENBU0UyKE9wKSBcCisgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKKyAgICAgICAgcmV0dXJuICZp
bnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9jYWxsTGlua0luZm8ubV9hcnJh
eVByb2ZpbGU7CisKKyAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJBWV9QUk9GSUxFKENBU0Ux
KQorICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElOS19JTkZPKENBU0UyKQor
CisjdW5kZWYgQ0FTRTEKKyN1bmRlZiBDQVNFMgogCiAgICAgY2FzZSBPcEdldEJ5SWQ6Om9wY29k
ZUlEOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlvbi0+YXM8T3BHZXRCeUlk
PigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKHRoaXMpOwot
ICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkK
KyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6
OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0yNjMzLDE2ICsyNjMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9u
c0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5vbkFyCiAgICAgbnVtYmVy
T2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBudW1iZXJPZlNhbXBsZXNJ
blByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVlUHJvZmlsZTo6bnVtYmVy
T2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0aGVuIHZhbHVlIHByb2Zp
bGVzIGFyZSBmdWxsLgogCi0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxl
JiBwcm9maWxlKSB7CisgICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiBw
cm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKICAgICAgICAgdW5zaWduZWQgbnVtU2FtcGxlcyA9
IHByb2ZpbGUudG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChW
YWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKICAgICAgICAgaWYgKG51bVNhbXBs
ZXMgPiBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cykKICAgICAgICAgICAgIG51bVNhbXBs
ZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2UgZG9uJ3Qgd2FudCBwcm9m
aWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1vcmUgd2VpZ2h0LgogICAg
ICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBsZXM7Ci0gICAgICAgIGlm
IChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAgICAgIGlmIChpc0FyZ3VtZW50
KSB7CiAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChwcm9maWxlLm51
bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUubV9wcmVkaWN0aW9uICE9IFNwZWNOb25lKQorICAg
ICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9maWxlLmlzU2FtcGxlZEJl
Zm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVz
Kys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CiAg
ICAgfSk7CkBAIC0yNjUwLDcgKzI2NTEsNyBAQCB2b2lkIENvZGVCbG9jazo6dXBkYXRlQWxsUHJl
ZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJPZkxpdmVOb25BcgogICAg
IGlmIChhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBwcm9maWxlQnVja2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9maWxlcykgewogICAgICAg
ICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQm
IHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC0yODAwLDEyICsyODAxLDExIEBAIHZvaWQgQ29kZUJsb2NrOjpub3RpZnlMZXhpY2Fs
QmluZGluZ1VwZGF0ZSgpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogewog
ICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6XG4iKTsKLSAgICBmb3JF
YWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkgewotICAgICAgICBpZiAo
cHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewotICAgICAgICAgICAgQVNTRVJUKHByb2Zp
bGUubV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBkYXRhTG9nRigiICAgYXJn
ID0gJXU6ICIsIGkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGRhdGFMb2dGKCIgICBi
YyA9ICVkOiAiLCBwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQpOworICAgIGZvckVhY2hWYWx1ZVBy
b2ZpbGUoW10oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKKyAgICAg
ICAgaWYgKGlzQXJndW1lbnQpCisgICAgICAgICAgICBkYXRhTG9nRigiICAgYXJnOiAiKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjOiAiKTsKICAgICAgICAgaWYg
KCFwcm9maWxlLm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUubV9wcmVkaWN0aW9uID09IFNw
ZWNOb25lKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiPGVtcHR5PlxuIik7CiAgICAgICAgICAg
ICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaApp
bmRleCBhOTNjMzZmYjkxOGYzYjMwY2FiMGM3OThlNjFlNzBjYTU5MWIxOGNmLi5mNWRiZmVjNjk0
YmQxNDcyYjk5YWM1ZjBlYjMxZDBkMGFkMGNmZmRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00NzgsNyArNDc4LDYgQEAgY2xhc3MgQ29kZUJsb2Nr
IDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBBU1NFUlQodm0oKS0+Y2FuVXNlSklU
KCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlvdXMgSklUIGNvbXBpbGVy
cyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxl
cyBiZWZvcmUgY2FsbGluZyB0aGlzLgogICAgICAgICBWYWx1ZVByb2ZpbGUmIHJlc3VsdCA9IG1f
YXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAgICAgICBBU1NFUlQocmVz
dWx0Lm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIApAQCAtOTc0LDcgKzk3Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBKU0NlbGwg
ewogICAgIFZNKiBtX3ZtOwogCiAgICAgY29uc3Qgdm9pZCogbV9pbnN0cnVjdGlvbnNSYXdQb2lu
dGVyIHsgbnVsbHB0ciB9OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5m
bywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+PiBtX2luY29taW5nTExJ
bnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIFBhY2tl
ZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5jb21pbmdMTEludENhbGxz
OwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5SWRXYXRjaHBvaW50TWFw
OwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5BQkxFKEpJVCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrSW5saW5lcy5oCmluZGV4
IGYwMGIzOTc4NzMyZTRmNjdkZDJlNTU2MTA0NzdmZGMyZjdhNWNhY2IuLjIyZTc2YjE4NWViOWVi
YTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzUsMTEgKzM1LDExIEBAIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9yRWFjaFZhbHVlUHJvZmls
ZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCi0gICAgICAgIGZ1bmModmFsdWVQ
cm9maWxlRm9yQXJndW1lbnQoaSkpOworICAgICAgICBmdW5jKHZhbHVlUHJvZmlsZUZvckFyZ3Vt
ZW50KGkpLCB0cnVlKTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAjZGVmaW5lIFZJU0lUKF9f
b3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICBtX21ldGFkYXRhLT5mb3JFYWNo
PF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUsIGZh
bHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhfVkFMVUVfUFJPRklMRShW
SVNJVCkKIApAQCAtNTMsMTYgKzUzLDIxIEBAIHZvaWQgQ29kZUJsb2NrOjpmb3JFYWNoQXJyYXlQ
cm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgaWYgKG1fbWV0YWRhdGEpIHsKICAg
ICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAoYXV0byYgbWV0YWRhdGEp
IHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5
TGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0g
R2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgICAgIGZ1bmMobWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CiAgICAgICAgIH0p
OwogCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyNkZWZpbmUgVklTSVQxKF9fb3ApIFwKICAgICBt
X21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCi0gICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRI
X0FSUkFZX1BST0ZJTEUoVklTSVQpCisjZGVmaW5lIFZJU0lUMihfX29wKSBcCisgICAgbV9tZXRh
ZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7IGZ1bmMobWV0YWRhdGEu
bV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKIAotI3VuZGVmIFZJU0lUCisgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQxKQorICAgICAgICBG
T1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhWSVNJVDIpCisKKyN1bmRl
ZiBWSVNJVDEKKyN1bmRlZiBWSVNJVDIKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBkYzQzNGU2YzRiN2ZkNGVk
ODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi41OWM0M2ZlYzQwNmU5ZGI5NWY2MzBiMWE3OGE1MzBm
NWNlMTY2YWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsNzkgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBlbnVt
IGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0gICAgRGVmYXVsdCA9IDAsCi0gICAgVW5z
ZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAgUHJvdG9Mb2FkID0gMCwgLy8gVGhpcyBt
dXN0IGJlIHplcm8gdG8gcmV1c2UgdGhlIGhpZ2hlciBiaXRzIG9mIHRoZSBwb2ludGVyIGFzIHRo
aXMgUHJvdG9Mb2FkIG1vZGUuCisgICAgRGVmYXVsdCA9IDEsCisgICAgVW5zZXQgPSAyLAogICAg
IEFycmF5TGVuZ3RoID0gMywKIH07CiAKKy8vIEluIDY0Yml0IExpdHRsZSBlbmRpYW4gYXJjaGl0
ZWN0dXJlLCB0aGlzIHVuaW9uIHNoYXJlcyBQcm90b0xvYWQncyBKU09iamVjdCogY2FjaGVkU2xv
dCB3aXRoICJoaWdDb3VudEZvckxMSW50Q2FjaGluZyIgYW5kICJtb2RlIi4KKy8vIFRoaXMgaXMg
cG9zc2libGUgYmVjYXVzZSB0aGVzZSB2YWx1ZXMgbXVzdCBiZSB6ZXJvIGlmIHdlIHVzZSBQcm90
b0xvYWQgbW9kZS4KKyNpZiBDUFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkKIHVu
aW9uIEdldEJ5SWRNb2RlTWV0YWRhdGEgeworI2Vsc2UKK3N0cnVjdCBHZXRCeUlkTW9kZU1ldGFk
YXRhIHsKKyNlbmRpZgogICAgIEdldEJ5SWRNb2RlTWV0YWRhdGEoKQotICAgIHsgfQorICAgIHsK
KyAgICAgICAgZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAwOworICAgICAgICBkZWZhdWx0TW9k
ZS5jYWNoZWRPZmZzZXQgPSAwOworICAgICAgICBkZWZhdWx0TW9kZS5wYWRkaW5nMSA9IDA7Cisg
ICAgICAgIG1vZGUgPSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKKyAgICAgICAgaGl0Q291bnRGb3JM
TEludENhY2hpbmcgPSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygp
OworICAgIH0KIAogICAgIHN0cnVjdCBEZWZhdWx0IHsKICAgICAgICAgU3RydWN0dXJlSUQgc3Ry
dWN0dXJlSUQ7CiAgICAgICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICB9IGRl
ZmF1bHRNb2RlOworICAgICAgICB1bnNpZ25lZCBwYWRkaW5nMTsKKyAgICB9OworICAgIHN0YXRp
Y19hc3NlcnQoc2l6ZW9mKERlZmF1bHQpID09IDEyKTsKIAogICAgIHN0cnVjdCBVbnNldCB7CiAg
ICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEOwotICAgIH0gdW5zZXRNb2RlOworICAgICAg
ICB1bnNpZ25lZCBwYWRkaW5nMTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZzI7CisgICAgfTsK
KyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihVbnNldCkgPT0gMTIpOworCisgICAgc3RydWN0IEFy
cmF5TGVuZ3RoIHsKKyAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKKyAgICB9Owor
ICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKEFycmF5TGVuZ3RoKSA9PSAxMik7CiAKICAgICBzdHJ1
Y3QgUHJvdG9Mb2FkIHsKICAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CiAgICAgICAg
IFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKICAgICAgICAgSlNPYmplY3QqIGNhY2hlZFNs
b3Q7Ci0gICAgfSBwcm90b0xvYWRNb2RlOworICAgIH07CiAKLSAgICBzdHJ1Y3QgQXJyYXlMZW5n
dGggewotICAgICAgICBBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlOwotICAgIH0gYXJyYXlMZW5n
dGhNb2RlOworI2lmIENQVShMSVRUTEVfRU5ESUFOKSAmJiBDUFUoQUREUkVTUzY0KQorICAgIHN0
cnVjdCB7CisgICAgICAgIHVpbnQzMl90IHBhZGRpbmcxOworICAgICAgICB1aW50MzJfdCBwYWRk
aW5nMjsKKyAgICAgICAgdWludDMyX3QgcGFkZGluZzM7CisgICAgICAgIHVpbnQxNl90IHBhZGRp
bmc0OworICAgICAgICBHZXRCeUlkTW9kZSBtb2RlOworICAgICAgICB1aW50OF90IGhpdENvdW50
Rm9yTExJbnRDYWNoaW5nOyAvLyBUaGlzIG11c3QgYmUgemVybyB3aGVuIHdlIHVzZSBQcm90b0xv
YWQgbW9kZS4KKyAgICB9OworICAgIERlZmF1bHQgZGVmYXVsdE1vZGU7CisgICAgVW5zZXQgdW5z
ZXRNb2RlOworICAgIEFycmF5TGVuZ3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICBQcm90b0xvYWQg
cHJvdG9Mb2FkTW9kZTsKKyNlbHNlCisgICAgdW5pb24geworICAgICAgICBEZWZhdWx0IGRlZmF1
bHRNb2RlOworICAgICAgICBVbnNldCB1bnNldE1vZGU7CisgICAgICAgIEFycmF5TGVuZ3RoIGFy
cmF5TGVuZ3RoTW9kZTsKKyAgICAgICAgUHJvdG9Mb2FkIHByb3RvTG9hZE1vZGU7CisgICAgfTsK
KyAgICBHZXRCeUlkTW9kZSBtb2RlOworICAgIHVpbnQ4X3QgaGl0Q291bnRGb3JMTEludENhY2hp
bmc7CisjZW5kaWYKIH07CisjaWYgQ1BVKExJVFRMRV9FTkRJQU4pICYmIENQVShBRERSRVNTNjQp
CitzdGF0aWNfYXNzZXJ0KHNpemVvZihHZXRCeUlkTW9kZU1ldGFkYXRhKSA9PSAxNik7CisjZW5k
aWYKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKaW5kZXggNmU0ZThiZmRiZTE3NWMwNmJmOTgyZTgzNDBl
YzY0MmMzOWMyMDE4Ni4uZGI5YWQxNjBhYzI4MTMwZjM5ODQxZmYzYmZlYjMyYjY4M2RkZWFkNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cApAQCAtNjQsNyArNjQsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
cm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZAogICAgICAgICBhdXRv
JiBtZXRhZGF0YSA9IGluc3RydWN0aW9uLT5hczxPcEdldEJ5SWQ+KCkubWV0YWRhdGEocHJvZmls
ZWRCbG9jayk7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGp1c3QgYmFpbCBpZiB3
ZSBzZWUgYSBnZXRfYnlfaWRfcHJvdG9fbG9hZC4KICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1ODAzOQotICAgICAgICBpZiAobWV0YWRhdGEubV9t
b2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQorICAgICAgICBpZiAobWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEubW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKICAgICAgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIGZhbHNlKTsKICAgICAgICAgc3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oCmluZGV4IDg0YjVjMTFjNTg2NjVkMzJiYmQ1YzIyMGQ5YTkxODM4Mjg0
YTFlMTYuLjdjMjdjZGY2NmU3YTliZGRhYTJmNmFiZWEyNjI4ZmNiNDY5MzlmNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCkBA
IC0zNCwxMCArMzQsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIHN0cnVjdCBJbnN0cnVjdGlvbjsK
IAotc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2Rl
PExMSW50Q2FsbExpbmtJbmZvPiB7Ci0gICAgTExJbnRDYWxsTGlua0luZm8oKQotICAgIHsKLSAg
ICB9CitjbGFzcyBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBQYWNrZWRSYXdTZW50aW5lbE5v
ZGU8TExJbnRDYWxsTGlua0luZm8+IHsKK3B1YmxpYzoKKyAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50cHRyX3QgdW5saW5r
ZWRCaXQgPSAweDE7CisKKyAgICBMTEludENhbGxMaW5rSW5mbygpID0gZGVmYXVsdDsKICAgICAK
ICAgICB+TExJbnRDYWxsTGlua0luZm8oKQogICAgIHsKQEAgLTQ1LDE5ICs0OCw0OSBAQCBzdHJ1
Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRD
YWxsTGlua0luZm8+IHsKICAgICAgICAgICAgIHJlbW92ZSgpOwogICAgIH0KICAgICAKLSAgICBi
b29sIGlzTGlua2VkKCkgeyByZXR1cm4gISFjYWxsZWU7IH0KKyAgICBib29sIGlzTGlua2VkKCkg
Y29uc3QgeyByZXR1cm4gIShtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIHVu
bGlua2VkQml0KTsgfQogICAgIAorCisgICAgdm9pZCBsaW5rKFZNJiB2bSwgSlNDZWxsKiBvd25l
ciwgSlNPYmplY3QqIGNhbGxlZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+
IGNvZGVQdHIpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJl
bW92ZSgpOworICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCA9IGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KGNhbGxlZSk7CisgICAgICAgIHZtLmhlYXAud3JpdGVCYXJy
aWVyKG93bmVyLCBjYWxsZWUpOworICAgICAgICBtX21hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICB9CisKICAgICB2b2lkIHVubGluaygpCiAgICAgewotICAgICAgICBjYWxsZWUuY2xl
YXIoKTsKLSAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8
SlNFbnRyeVB0clRhZz4oKTsKKyAgICAgICAgLy8gTWFrZSBsaW5rIGludmFsaWRhdGVkLiBJdCB3
b3JrcyBiZWNhdXNlIExMSW50IHRlc3RzIHRoZSBnaXZlbiBjYWxsZWUgd2l0aCB0aGlzIHBvaW50
ZXIuIEJ1dCBpdCBpcyBzdGlsbCB2YWxpZCBhcyBsYXN0U2VlbkNhbGxlZSEKKyAgICAgICAgbV9j
YWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgfD0gdW5saW5rZWRCaXQ7CisgICAgICAg
IG1fbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRh
Zz4oKTsKICAgICAgICAgaWYgKGlzT25MaXN0KCkpCiAgICAgICAgICAgICByZW1vdmUoKTsKICAg
ICB9Ci0gICAgCi0gICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBjYWxsZWU7Ci0gICAgV3JpdGVC
YXJyaWVyPEpTT2JqZWN0PiBsYXN0U2VlbkNhbGxlZTsKLSAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHI8SlNFbnRyeVB0clRhZz4gbWFjaGluZUNvZGVUYXJnZXQ7CisKKyAgICBKU09iamVjdCogY2Fs
bGVlKCkgY29uc3QKKyAgICB7CisgICAgICAgIGlmICghaXNMaW5rZWQoKSkKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTT2JqZWN0Kj4o
bV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQpOworICAgIH0KKworICAgIEpTT2Jq
ZWN0KiBsYXN0U2VlbkNhbGxlZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PEpTT2JqZWN0Kj4obV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQgJiB+
dW5saW5rZWRCaXQpOworICAgIH0KKworICAgIHZvaWQgY2xlYXJMYXN0U2VlbkNhbGxlZSgpCisg
ICAgeworICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCA9IHVubGlu
a2VkQml0OworICAgIH0KKworICAgIEFycmF5UHJvZmlsZSBtX2FycmF5UHJvZmlsZTsKKworcHJp
dmF0ZToKKyAgICB1aW50cHRyX3QgbV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXQg
eyB1bmxpbmtlZEJpdCB9OworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFn
PiBtX21hY2hpbmVDb2RlVGFyZ2V0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRQcm90b3R5cGVMb2FkQWRh
cHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCmlu
ZGV4IDBlZjZhNTVjOWM3MTk2MDNmMWEyZTM4YjU4MDU2NmYwYTI0NjdiZTEuLjU3YWJiOWE0YzAz
ZjJhOWZmNTFlY2VkY2RiZjIxNGU4NGE5NDA4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludFByb3Rv
dHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQuY3BwCkBAIC02NSw3ICs2NSw4IEBA
IHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRpdmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpmaXJl
SW50ZXJuYWwoVk0mIHZtLCBjb25zdCBGCiAKIHZvaWQgTExJbnRQcm90b3R5cGVMb2FkQWRhcHRp
dmVTdHJ1Y3R1cmVXYXRjaHBvaW50OjpjbGVhckxMSW50R2V0QnlJZENhY2hlKE9wR2V0QnlJZDo6
TWV0YWRhdGEmIG1ldGFkYXRhKQogewotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2Rl
OjpEZWZhdWx0OworICAgIC8vIEtlZXAgaGl0Q291bnRGb3JMTEludENhY2hpbmcgdmFsdWUuCisg
ICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0Owog
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7
CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAw
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9w
ZXJhbmRWYWx1ZVByb2ZpbGUuaAppbmRleCA5YzNiMDY4NDI3MDM0YjA4OWJhMDk4ZTgyMmZmZDBl
MTZlZjM1MDk2Li44ZjYwZWIwZjQwYWMzYjE2ZDZhYjAzZGFkZGM2MjI4ODljZWI0YzJkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuaApAQCAtMTI5LDE3ICsxMjksMTggQEAgc3RydWN0IExhenlPcGVyYW5kVmFs
dWVQcm9maWxlIDogcHVibGljIE1pbmltYWxWYWx1ZVByb2ZpbGUgewogICAgIH0KICAgICAKICAg
ICBleHBsaWNpdCBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZShjb25zdCBMYXp5T3BlcmFuZFZhbHVl
UHJvZmlsZUtleSYga2V5KQotICAgICAgICA6IE1pbmltYWxWYWx1ZVByb2ZpbGUoa2V5LmJ5dGVj
b2RlT2Zmc2V0KCkpCi0gICAgICAgICwgbV9vcGVyYW5kKGtleS5vcGVyYW5kKCkpCisgICAgICAg
IDogTWluaW1hbFZhbHVlUHJvZmlsZSgpCisgICAgICAgICwgbV9rZXkoa2V5KQogICAgIHsKICAg
ICB9CiAgICAgCiAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkga2V5KCkgY29uc3QKICAg
ICB7Ci0gICAgICAgIHJldHVybiBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleShtX2J5dGVjb2Rl
T2Zmc2V0LCBtX29wZXJhbmQpOworICAgICAgICByZXR1cm4gbV9rZXk7CiAgICAgfQogICAgIAog
ICAgIFZpcnR1YWxSZWdpc3RlciBtX29wZXJhbmQ7CisgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGVLZXkgbV9rZXk7CiAgICAgCiAgICAgdHlwZWRlZiBTZWdtZW50ZWRWZWN0b3I8TGF6eU9wZXJh
bmRWYWx1ZVByb2ZpbGUsIDg+IExpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKaW5kZXggYTVkNDEyMWIxZDQxZDE2MWJmMjY1NDJlMDky
ODZjZmJkOTkzOTViOC4uOTU0ZDBiYTE2ZDc4MjEwMzk3YmNmZmY5NDg2ODk4M2JhMjAyYzQ2YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFibGUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCkBA
IC04OCwxMSArODgsNiBAQCBjbGFzcyBNZXRhZGF0YVRhYmxlIHsKICAgICAgICAgcmV0dXJuIHJl
ZkNvdW50KCkgPT0gMTsKICAgICB9CiAKLSAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCogYnVmZmVyKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRN
ZXRhZGF0YVRhYmxlOjpPZmZzZXQqPih0aGlzKTsKLSAgICB9Ci0KIHByaXZhdGU6CiAgICAgTWV0
YWRhdGFUYWJsZShVbmxpbmtlZE1ldGFkYXRhVGFibGUmKTsKIApAQCAtMTAxLDYgKzk2LDExIEBA
IGNsYXNzIE1ldGFkYXRhVGFibGUgewogICAgICAgICByZXR1cm4gKmJpdHdpc2VfY2FzdDxVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKj4oKGJpdHdpc2VfY2FzdDx1aW50OF90Kj4o
dGhpcykgLSBzaXplb2YoVW5saW5rZWRNZXRhZGF0YVRhYmxlOjpMaW5raW5nRGF0YSkpKTsKICAg
ICB9CiAKKyAgICBVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCogYnVmZmVyKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VW5saW5rZWRNZXRhZGF0YVRhYmxlOjpPZmZz
ZXQqPih0aGlzKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHVpbnQ4X3QqIGdldEltcGwo
dW5zaWduZWQgaSkKICAgICB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+
KHRoaXMpICsgYnVmZmVyKClbaV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCmluZGV4IGE3MDc1M2E3Yjk5NjRk
YzhjNWFmNjE4M2YzODAyZTA1NjRlNWRlOGMuLmY1Njc5YzkzZTVjZTBkNGM1YmIxNDhhZTM1Yzcy
OGU1MzIzMzMyOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
YmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZS5oCkBAIC0zNSwxNyArMzUsMTQgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGE7CiAKLWNsYXNzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIHsKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+CitjbGFzcyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZUJhc2UgewogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigp
IHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9hbGxv
Y2F0b3IpOyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZlN0cnVjdHVyZSgpIHsgcmV0
dXJuIE9CSkVDVF9PRkZTRVRPRihPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSwgbV9zdHJ1Y3R1cmUp
OyB9Ci0gICAgc3RhdGljIHB0cmRpZmZfdCBvZmZzZXRPZklubGluZUNhcGFjaXR5KCkgeyByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2lubGluZUNhcGFj
aXR5KTsgfQorICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZBbGxvY2F0b3IoKSB7IHJldHVy
biBPQkpFQ1RfT0ZGU0VUT0YoT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlLCBtX2FsbG9jYXRv
cik7IH0KKyAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4g
T0JKRUNUX09GRlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZSwgbV9zdHJ1Y3R1cmUp
OyB9CiAKLSAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCi0gICAgICAgIDogbV9pbmxpbmVD
YXBhY2l0eSgwKQotICAgIHsKLSAgICB9CisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
KCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc051bGwoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmU7
IH0KIApAQCAtNTgsMzcgKzU1LDc0IEBAIGNsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIHsK
ICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmU7
CiAgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBjbGVhcigpCisgICAgeworICAgICAgICBt
X2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOworICAgICAgICBtX3N0cnVjdHVyZS5jbGVhcigpOwor
ICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOworICAgIH0KKworICAgIHZvaWQgdmlzaXRBZ2dyZWdh
dGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCisgICAgeworICAgICAgICB2aXNpdG9yLmFwcGVuZCht
X3N0cnVjdHVyZSk7CisgICAgfQorCitwcml2YXRlOgorICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVm
YXVsdFByb3BlcnR5Q291bnQoVk0mLCBKU09iamVjdCogcHJvdG90eXBlKTsKKworICAgIEFsbG9j
YXRvciBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZv
ciBnZW5lcmF0ZWQgY29kZS4KKyAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVy
ZTsKK307CisKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIDogcHVibGljIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT4geworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU+OworCisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSA9IGRlZmF1bHQ7
CisKKyAgICB1c2luZyBCYXNlOjpjbGVhcjsKKyAgICB1c2luZyBCYXNlOjp2aXNpdEFnZ3JlZ2F0
ZTsKKworICAgIHZvaWQgc2V0UHJvdG90eXBlKFZNJiwgSlNDZWxsKiwgSlNPYmplY3QqKSB7IH0K
K307CisKK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSA6IHB1Ymxp
YyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRo
UHJvdG90eXBlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU+OworCisgICAg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKCkgPSBkZWZhdWx0OworCiAgICAg
SlNPYmplY3QqIHByb3RvdHlwZSgpCiAgICAgewogICAgICAgICBKU09iamVjdCogcHJvdG90eXBl
ID0gbV9wcm90b3R5cGUuZ2V0KCk7CiAgICAgICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAg
ICAgICByZXR1cm4gcHJvdG90eXBlOwogICAgIH0KLSAgICB1bnNpZ25lZCBpbmxpbmVDYXBhY2l0
eSgpIHsgcmV0dXJuIG1faW5saW5lQ2FwYWNpdHk7IH0KLQogCiAgICAgdm9pZCBjbGVhcigpCiAg
ICAgewotICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOwotICAgICAgICBtX3N0cnVj
dHVyZS5jbGVhcigpOworICAgICAgICBCYXNlOjpjbGVhcigpOwogICAgICAgICBtX3Byb3RvdHlw
ZS5jbGVhcigpOwotICAgICAgICBtX2lubGluZUNhcGFjaXR5ID0gMDsKICAgICAgICAgQVNTRVJU
KGlzTnVsbCgpKTsKICAgICB9CiAKICAgICB2b2lkIHZpc2l0QWdncmVnYXRlKFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHsKLSAgICAgICAgdmlzaXRvci5hcHBlbmQobV9zdHJ1Y3R1cmUpOwor
ICAgICAgICBCYXNlOjp2aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKICAgICAgICAgdmlzaXRvci5h
cHBlbmQobV9wcm90b3R5cGUpOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICB1bnNpZ25lZCBwb3Nz
aWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiwgSlNPYmplY3QqIHByb3RvdHlwZSk7CisgICAg
dm9pZCBzZXRQcm90b3R5cGUoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogb2JqZWN0
KQorICAgIHsKKyAgICAgICAgbV9wcm90b3R5cGUuc2V0KHZtLCBvd25lciwgb2JqZWN0KTsKKyAg
ICB9CiAKLSAgICBBbGxvY2F0b3IgbV9hbGxvY2F0b3I7IC8vIFByZWNvbXB1dGVkIHRvIG1ha2Ug
dGhpbmdzIGVhc2llciBmb3IgZ2VuZXJhdGVkIGNvZGUuCi0gICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJ1Y3R1cmU7Citwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxKU09iamVjdD4g
bV9wcm90b3R5cGU7Ci0gICAgdW5zaWduZWQgbV9pbmxpbmVDYXBhY2l0eTsKIH07CiAKKworCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9PYmplY3RBbGxvY2F0aW9uUHJvZmlsZUlubGluZXMuaAppbmRleCA0OTk5
MTIxYjE2NjA2NDNjODU5N2UzMjBhMGE2MjVkZGMyYzVkNjgyLi5mMTFjNGNjNGY1ZjQzYWE2Zjcz
NDc4NTQ0MGFkZjdhMGJlODE4OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCkBA
IC0zMSwxMiArMzEsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLUFMV0FZU19JTkxJTkUgdm9p
ZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogcHJvdG90
eXBlLCB1bnNpZ25lZCBpbmZlcnJlZElubGluZUNhcGFjaXR5LCBKU0Z1bmN0aW9uKiBjb25zdHJ1
Y3RvciwgRnVuY3Rpb25SYXJlRGF0YSogZnVuY3Rpb25SYXJlRGF0YSkKK3RlbXBsYXRlPHR5cGVu
YW1lIERlcml2ZWQ+CitBTFdBWVNfSU5MSU5FIHZvaWQgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVk
IGluZmVycmVkSW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBGdW5jdGlv
blJhcmVEYXRhKiBmdW5jdGlvblJhcmVEYXRhKQogewogICAgIEFTU0VSVCghbV9hbGxvY2F0b3Ip
OwogICAgIEFTU0VSVCghbV9zdHJ1Y3R1cmUpOwotICAgIEFTU0VSVCghbV9wcm90b3R5cGUpOwot
ICAgIEFTU0VSVCghbV9pbmxpbmVDYXBhY2l0eSk7CiAKICAgICAvLyBGSVhNRTogVGVhY2ggY3Jl
YXRlX3RoaXMncyBmYXN0IHBhdGggaG93IHRvIGFsbG9jYXRlIHBvbHkKICAgICAvLyBwcm90byBv
YmplY3RzOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTE3CkBA
IC01Niw4ICs1NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6aW5pdGlhbGl6ZVByb2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEZpbmFsT2JqZWN0VHlw
ZSk7CiAgICAgICAgICAgICBtX2FsbG9jYXRvciA9IEFsbG9jYXRvcigpOwogICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUuc2V0KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICAgICAgICAgIG1fcHJv
dG90eXBlLnNldCh2bSwgb3duZXIsIHByb3RvdHlwZSk7Ci0gICAgICAgICAgICBtX2lubGluZUNh
cGFjaXR5ID0gc3RydWN0dXJlLT5pbmxpbmVDYXBhY2l0eSgpOworICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8RGVyaXZlZCo+KHRoaXMpLT5zZXRQcm90b3R5cGUodm0sIG93bmVyLCBwcm90b3R5cGUp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEzOCwxMSArMTM2LDExIEBA
IEFMV0FZU19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5pdGlhbGl6ZVBy
b2ZpbGUoVk0mIHZtLCBKU0dsb2JhbE9iCiAgICAgV1RGOjpzdG9yZVN0b3JlRmVuY2UoKTsKIAog
ICAgIG1fc3RydWN0dXJlLnNldCh2bSwgb3duZXIsIHN0cnVjdHVyZSk7Ci0gICAgbV9wcm90b3R5
cGUuc2V0KHZtLCBvd25lciwgcHJvdG90eXBlKTsKLSAgICBtX2lubGluZUNhcGFjaXR5ID0gaW5s
aW5lQ2FwYWNpdHk7CisgICAgc3RhdGljX2Nhc3Q8RGVyaXZlZCo+KHRoaXMpLT5zZXRQcm90b3R5
cGUodm0sIG93bmVyLCBwcm90b3R5cGUpOwogfQogCi1BTFdBWVNfSU5MSU5FIHVuc2lnbmVkIE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KFZNJiB2
bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKK3RlbXBsYXRlPHR5cGVuYW1lIERlcml2ZWQ+CitBTFdB
WVNfSU5MSU5FIHVuc2lnbmVkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxEZXJpdmVkPjo6
cG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChWTSYgdm0sIEpTT2JqZWN0KiBwcm90b3R5cGUp
CiB7CiAgICAgaWYgKHByb3RvdHlwZSA9PSBwcm90b3R5cGUtPmdsb2JhbE9iamVjdCh2bSktPm9i
amVjdFByb3RvdHlwZSgpKQogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAppbmRleCA4YWM2MDNlM2NjNWY3YjE5MzU0NGJiMGNmZjA4NDhkZGIy
MjA3NGNlLi40NDI3ZGQ5OGE0MDcxNmY5ZTM4YzQ2OWU3MmNmMGI2MGU5Y2M1OTk1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCkBAIC0xMTEsMTAgKzExMSw2IEBAIGV4
dGVybiBjb25zdCB1bnNpZ25lZCBvcGNvZGVMZW5ndGhzW107CiAgICAgbWFjcm8oT3BUYWlsQ2Fs
bEZvcndhcmRBcmd1bWVudHMpIFwKICAgICBtYWNybyhPcENvbnN0cnVjdFZhcmFyZ3MpIFwKICAg
ICBtYWNybyhPcEdldEJ5VmFsKSBcCi0gICAgbWFjcm8oT3BDYWxsKSBcCi0gICAgbWFjcm8oT3BU
YWlsQ2FsbCkgXAotICAgIG1hY3JvKE9wQ2FsbEV2YWwpIFwKLSAgICBtYWNybyhPcENvbnN0cnVj
dCkgXAogICAgIG1hY3JvKE9wSW5CeVZhbCkgXAogICAgIG1hY3JvKE9wUHV0QnlWYWwpIFwKICAg
ICBtYWNybyhPcFB1dEJ5VmFsRGlyZWN0KSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVQcm9maWxlLmgKaW5kZXggZmEwZDNiMDdhM2M0NDZiZDFhMDAzMGU1MTI0MTg0
ZTNiNDRmYWU5NS4uNDg4M2I0YjNkMjFiYmZjOGVkNjZjZmI5NDc1OTBkNzA5NWFiNjFlZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAtNDQs
MTQgKzQ0LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCB0b3RhbE51bWJlck9mQnVja2V0cyA9IG51bWJlck9mQnVja2V0cyArIG51bWJlck9m
U3BlY0ZhaWxCdWNrZXRzOwogICAgIAogICAgIFZhbHVlUHJvZmlsZUJhc2UoKQotICAgICAgICA6
IG1fYnl0ZWNvZGVPZmZzZXQoLTEpCi0gICAgewotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkKLSAgICAgICAgICAgIG1fYnVja2V0c1tp
XSA9IEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIH0KLSAgICAKLSAgICBWYWx1ZVBy
b2ZpbGVCYXNlKGludCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KQogICAgIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpCiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBK
U1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKQEAgLTg2LDggKzc4LDEwIEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mU2FtcGxlcygp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBtX251bWJl
ck9mU2FtcGxlc0luUHJlZGljdGlvbjsKKyAgICAgICAgcmV0dXJuIG51bWJlck9mU2FtcGxlcygp
ICsgaXNTYW1wbGVkQmVmb3JlKCk7CiAgICAgfQorCisgICAgYm9vbCBpc1NhbXBsZWRCZWZvcmUo
KSBjb25zdCB7IHJldHVybiBtX3ByZWRpY3Rpb24gIT0gU3BlY05vbmU7IH0KICAgICAKICAgICBi
b29sIGlzTGl2ZSgpIGNvbnN0CiAgICAgewpAQCAtMTA5LDcgKzEwMyw3IEBAIHN0cnVjdCBWYWx1
ZVByb2ZpbGVCYXNlIHsKICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAg
ICB7Ci0gICAgICAgIG91dC5wcmludCgic2FtcGxlcyA9ICIsIHRvdGFsTnVtYmVyT2ZTYW1wbGVz
KCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKKyAg
ICAgICAgb3V0LnByaW50KCJzYW1wbGVkIGJlZm9yZSA9ICIsIGlzU2FtcGxlZEJlZm9yZSgpLCAi
IGxpdmUgc2FtcGxlcyA9ICIsIG51bWJlck9mU2FtcGxlcygpLCAiIHByZWRpY3Rpb24gPSAiLCBT
cGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CiAgICAgICAgIGJvb2wgZmlyc3QgPSB0cnVl
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tldHM7
ICsraSkgewogICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1
Y2tldHNbaV0pOwpAQCAtMTMzLDcgKzEyNyw2IEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsK
ICAgICAgICAgICAgIGlmICghdmFsdWUpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgICAgICAKLSAgICAgICAgICAgIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0aW9uKys7CiAg
ICAgICAgICAgICBtZXJnZVNwZWN1bGF0aW9uKG1fcHJlZGljdGlvbiwgc3BlY3VsYXRpb25Gcm9t
VmFsdWUodmFsdWUpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9idWNrZXRzW2ldID0g
SlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CkBAIC0xNDIsMTcgKzEzNSwxMyBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgICAgIHJldHVybiBtX3ByZWRpY3Rpb247CiAgICAgfQog
ICAgIAotICAgIGludCBtX2J5dGVjb2RlT2Zmc2V0OyAvLyAtMSBmb3IgcHJvbG9ndWUKLSAgICB1
bnNpZ25lZCBtX251bWJlck9mU2FtcGxlc0luUHJlZGljdGlvbiB7IDAgfTsKLSAgICAKLSAgICBT
cGVjdWxhdGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwotICAgIAogICAgIEVuY29k
ZWRKU1ZhbHVlIG1fYnVja2V0c1t0b3RhbE51bWJlck9mQnVja2V0c107CisKKyAgICBTcGVjdWxh
dGVkVHlwZSBtX3ByZWRpY3Rpb24geyBTcGVjTm9uZSB9OwogfTsKIAogc3RydWN0IE1pbmltYWxW
YWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwwPiB7CiAgICAgTWluaW1hbFZh
bHVlUHJvZmlsZSgpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KCkgeyB9Ci0gICAgTWluaW1hbFZhbHVl
UHJvZmlsZShpbnQgYnl0ZWNvZGVPZmZzZXQpOiBWYWx1ZVByb2ZpbGVCYXNlPDA+KGJ5dGVjb2Rl
T2Zmc2V0KSB7IH0KIH07CiAKIHRlbXBsYXRlPHVuc2lnbmVkIGxvZ051bWJlck9mQnVja2V0c0Fy
Z3VtZW50PgpAQCAtMTYzLDIzICsxNTIsMTIgQEAgc3RydWN0IFZhbHVlUHJvZmlsZVdpdGhMb2dO
dW1iZXJPZkJ1Y2tldHMgOiBwdWJsaWMgVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWIKICAg
ICAgICAgOiBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+
KCkKICAgICB7CiAgICAgfQotICAgIFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHMo
aW50IGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICA6IFZhbHVlUHJvZmlsZUJhc2U8MSA8PCBsb2dO
dW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oYnl0ZWNvZGVPZmZzZXQpCi0gICAgewotICAgIH0KIH07
CiAKIHN0cnVjdCBWYWx1ZVByb2ZpbGUgOiBwdWJsaWMgVmFsdWVQcm9maWxlV2l0aExvZ051bWJl
ck9mQnVja2V0czwwPiB7CiAgICAgVmFsdWVQcm9maWxlKCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9n
TnVtYmVyT2ZCdWNrZXRzPDA+KCkgeyB9Ci0gICAgVmFsdWVQcm9maWxlKGludCBieXRlY29kZU9m
ZnNldCkgOiBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+KGJ5dGVjb2RlT2Zm
c2V0KSB7IH0KIH07CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaW50IGdldFZhbHVl
UHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFQqIHZhbHVlUHJvZmlsZSkKLXsKLSAgICByZXR1cm4gdmFs
dWVQcm9maWxlLT5tX2J5dGVjb2RlT2Zmc2V0OwotfQotCiAvLyBUaGlzIGlzIGEgbWluaSB2YWx1
ZSBwcm9maWxlIHRvIGNhdGNoIHBhdGhvbG9naWVzLiBJdCBpcyBhIGNvdW50ZXIgdGhhdCBnZXRz
CiAvLyBpbmNyZW1lbnRlZCB3aGVuIHdlIHRha2UgdGhlIHNsb3cgcGF0aCBvbiBhbnkgaW5zdHJ1
Y3Rpb24uCiBzdHJ1Y3QgUmFyZUNhc2VQcm9maWxlIHsKQEAgLTE5OCw4ICsxNzYsNyBAQCBpbmxp
bmUgaW50IGdldFJhcmVDYXNlUHJvZmlsZUJ5dGVjb2RlT2Zmc2V0KFJhcmVDYXNlUHJvZmlsZSog
cmFyZUNhc2VQcm9maWxlKQogICAgIHJldHVybiByYXJlQ2FzZVByb2ZpbGUtPm1fYnl0ZWNvZGVP
ZmZzZXQ7CiB9CiAKLXN0cnVjdCBWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kIHsKLSAgICBWYWx1ZVBy
b2ZpbGUgbV9wcm9maWxlOworc3RydWN0IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgOiBwdWJsaWMg
VmFsdWVQcm9maWxlIHsKICAgICBpbnQgbV9vcGVyYW5kOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCA2NTA1YWQ1NzkzNDcw
MjExOWM1OGZiNjc4N2Q5YTZjZDg4MzRkM2M1Li5iNjg2NWY3YWNhYzcxMjBkOGYxNmE1YjRhNjQ1
NzA2YmVkNmEwY2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcApAQCAtNDc5NSw3ICs0Nzk1LDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewog
ICAgICAgICAgICAgTm9kZSogb3AxID0gZ2V0VGhpcygpOwogICAgICAgICAgICAgYXV0byYgbWV0
YWRhdGEgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpLm1ldGFkYXRhKGNvZGVC
bG9jayk7Ci0gICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0cnVjdHVyZSA9IG1ldGFkYXRh
Lm1fY2FjaGVkU3RydWN0dXJlLmdldCgpOworICAgICAgICAgICAgU3RydWN0dXJlSUQgY2FjaGVk
U3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOworICAgICAgICAgICAg
U3RydWN0dXJlKiBjYWNoZWRTdHJ1Y3R1cmUgPSBudWxscHRyOworICAgICAgICAgICAgaWYgKGNh
Y2hlZFN0cnVjdHVyZUlEKQorICAgICAgICAgICAgICAgIGNhY2hlZFN0cnVjdHVyZSA9IG1fdm0t
PmhlYXAuc3RydWN0dXJlSURUYWJsZSgpLmdldChjYWNoZWRTdHJ1Y3R1cmVJRCk7CiAgICAgICAg
ICAgICBpZiAobWV0YWRhdGEubV90b1RoaXNTdGF0dXMgIT0gVG9UaGlzT0sKICAgICAgICAgICAg
ICAgICB8fCAhY2FjaGVkU3RydWN0dXJlCiAgICAgICAgICAgICAgICAgfHwgY2FjaGVkU3RydWN0
dXJlLT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUudG9UaGlzICE9IEpTT2JqZWN0OjppbmZvKCkt
Pm1ldGhvZFRhYmxlLnRvVGhpcwpAQCAtNjAxMSw3ICs2MDE0LDcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKIAogICAgICAgICAgICAgICAgIGJ1ZmZl
ci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKICAgICAg
ICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQocHJvZmlsZS5tX29wZXJhbmQp
OwotICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmls
ZS5tX3Byb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tlcik7CisgICAgICAgICAg
ICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgICAgICAgICBpZiAob3BlcmFuZC5p
c0xvY2FsKCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByZWRpY3Rpb25zLmFwcGVu
ZChwcmVkaWN0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBlZTUzZDYxZDdmNzU0Njc4MWE5
MDQ2NzYwZjJhNWE5ZWYzOGI2ZWQ1Li4yNWM0YzA5MGQ2MDAxZTZiYzExZjQwYjY0NmI5ZGY2NzZi
NmMwNDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
QEAgLTM1NSw3ICszNTUsNyBAQCBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ3JlYXRl
VGhpcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBjb25zdHJ1Y3RvcgogICAgIGlmIChjb25z
dHJ1Y3Rvci0+dHlwZSgpID09IEpTRnVuY3Rpb25UeXBlICYmIGpzQ2FzdDxKU0Z1bmN0aW9uKj4o
Y29uc3RydWN0b3IpLT5jYW5Vc2VBbGxvY2F0aW9uUHJvZmlsZSgpKSB7CiAgICAgICAgIGF1dG8g
cmFyZURhdGEgPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvbnN0cnVjdG9yKS0+ZW5zdXJlUmFyZURh
dGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSk7CiAgICAgICAgIHNj
b3BlLnJlbGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwotICAgICAgICBPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUgPSByYXJlRGF0YS0+b2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKTsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKiBh
bGxvY2F0aW9uUHJvZmlsZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwog
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFsbG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1
cmUoKTsKICAgICAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIHN0cnVjdHVyZSk7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmhhc1BvbHlQcm90bygpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmlu
ZGV4IGRlYmQwM2ViMWVjNjg1ZDA3YzBhNzViMWU4ZDNmYTRhOWU1YzY3NTIuLmQwNDEwYjM1ZDM5
MDE3ZjgwZGI1OTA1ZWQ0OTJkM2UzMzg2OGJjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMjU2NSwxNCArMTI1NjUsMTMgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNyZWF0ZVRoaXMoTm9kZSogbm9kZSkKICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RGdW5jdGlvbihjYWxsZWVHUFIpKTsKICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFHUFIpOwogICAgIHNsb3dQYXRoLmFwcGVu
ZChtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByYXJlRGF0YUdQUikp
OwotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1
bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVj
dEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yR1BSKTsK
LSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7Cisg
ICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rp
b25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2Nh
dG9yR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRh
R1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJl
KCkpLCBzdHJ1Y3R1cmVHUFIpOwogCiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRy
KG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdEdQUiwgSklUQWxsb2Nh
dG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JHUFIsIHN0cnVjdHVyZUdQUiwgYnV0dGVyZmx5LCBz
Y3JhdGNoR1BSLCBzbG93UGF0aCk7CiAKLSAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpB
ZGRyZXNzKGNhbGxlZUdQUiwgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURh
dGFHUFIpOwotICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQ
UiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIGlubGlu
ZUNhcGFjaXR5R1BSKTsKKyAgICBtX2ppdC5sb2FkOChKSVRDb21waWxlcjo6QWRkcmVzcyhzdHJ1
Y3R1cmVHUFIsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIGlubGluZUNhcGFj
aXR5R1BSKTsKICAgICBtX2ppdC5lbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0R1BS
LCBpbmxpbmVDYXBhY2l0eUdQUik7CiAgICAgbV9qaXQubXV0YXRvckZlbmNlKCptX2ppdC52bSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhl
YXBSZXBvc2l0b3J5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVh
cFJlcG9zaXRvcnkuaAppbmRleCA4OTk5NWU2NzQ4ZDNmMjQyYTVlMDIwNWNhMGNhZTE2NDU4Mzk3
ZTMwLi43MGM5OTNhNzE4YTc3MWYxNjFkY2YyYmUzNDIxMmYwOTE4ZWI5ZjBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnku
aApAQCAtNTcsOCArNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEZUTCB7CiAgICAg
bWFjcm8oRGlyZWN0QXJndW1lbnRzX21pbkNhcGFjaXR5LCBEaXJlY3RBcmd1bWVudHM6Om9mZnNl
dE9mTWluQ2FwYWNpdHkoKSkgXAogICAgIG1hY3JvKERpcmVjdEFyZ3VtZW50c19tYXBwZWRBcmd1
bWVudHMsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNYXBwZWRBcmd1bWVudHMoKSkgXAogICAg
IG1hY3JvKERpcmVjdEFyZ3VtZW50c19tb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IsIERpcmVj
dEFyZ3VtZW50czo6b2Zmc2V0T2ZNb2RpZmllZEFyZ3VtZW50c0Rlc2NyaXB0b3IoKSkgXAotICAg
IG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZz
ZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
b2Zmc2V0T2ZBbGxvY2F0b3IoKSkgXAotICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0
dXJlLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkg
KyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSkgXAorICAgIG1h
Y3JvKEZ1bmN0aW9uUmFyZURhdGFfYWxsb2NhdG9yLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpIFwKKyAgICBtYWNybyhGdW5jdGlvblJhcmVE
YXRhX3N0cnVjdHVyZSwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX2dldHRlciwgR2V0dGVyU2V0
dGVyOjpvZmZzZXRPZkdldHRlcigpKSBcCiAgICAgbWFjcm8oR2V0dGVyU2V0dGVyX3NldHRlciwg
R2V0dGVyU2V0dGVyOjpvZmZzZXRPZlNldHRlcigpKSBcCiAgICAgbWFjcm8oSlNBcnJheUJ1ZmZl
clZpZXdfbGVuZ3RoLCBKU0FycmF5QnVmZmVyVmlldzo6b2Zmc2V0T2ZMZW5ndGgoKSkgXApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKaW5kZXggYWZjNGIyOTUzZDMyMjVkZTA4NjE2
NzI3NDczY2FkN2NlYzNkYzI1OS4uYzA2NDM4N2JlYTYwYzQ5Mzg3M2ExZTkxZTU1ZDRkNTU5Zjdh
Yzc1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCkBAIC02OSw3ICs2OSw3
IEBAIEpJVDo6Y29tcGlsZVNldHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0lu
Zm8qKQogICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKHJlZ2lzdGVyT2Zmc2V0ICsgQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCksIHJlZ1QwKTsKICAgICAgICAg
SnVtcCBkb25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJl
c3MocmVnVDAsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsKLSAgICAgICAg
c3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5T
dHJ1Y3R1cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMCwgbWV0YWRhdGEubV9jYWxsTGlu
a0luZm8ubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAg
ICAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwCmluZGV4IGI0MmU5OTdhYWI2M2RiYjE1MmRhZTI0MmQ3Yjk0ZjBl
MzRlOTM2OTcuLmFmNjA4ZjAzMTBkMThlYjJmYmJlMmRkNjg0YjJlNWNlZmQ4M2I3NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAKQEAgLTE2MCw3ICsxNjAs
NyBAQCBKSVQ6OmNvbXBpbGVTZXR1cEZyYW1lKGNvbnN0IE9wJiBieXRlY29kZSwgQ2FsbExpbmtJ
bmZvKikKICAgICAgICAgZW1pdExvYWQocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDAsIHJlZ1QxKTsKICAgICAgICAgSnVtcCBk
b25lID0gYnJhbmNoSWZOb3RDZWxsKHJlZ1QwKTsKICAgICAgICAgbG9hZDMyKEFkZHJlc3MocmVn
VDEsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QxKTsKLSAgICAgICAgc3RvcmUz
MihyZWdUMSwgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1
cmVJRCgpKTsKKyAgICAgICAgc3RvcmUzMihyZWdUMSwgbWV0YWRhdGEubV9jYWxsTGlua0luZm8u
bV9hcnJheVByb2ZpbGUuYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpKTsKICAgICAgICAg
ZG9uZS5saW5rKHRoaXMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRPcGNvZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKaW5kZXggMThjZWJhNmFkOTBiODA4YzRlMDRmZmQxOGYxY2I5MjY1MjJmNDI2Mi4u
ZjA1ZGJhOTY0YjJlNjc3YTg5M2IxZGQxZWZiYWRjMjRjM2U4M2E0MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wY29kZXMuY3BwCkBAIC03MDcsNyArNzA3LDcgQEAgdm9pZCBKSVQ6
OmVtaXRfb3BfY2F0Y2goY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAg
ICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmls
ZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZ3MgcmVncyhyZWdUMCk7CiAgICAgICAgICAgICBl
bWl0R2V0VmlydHVhbFJlZ2lzdGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAg
ICAgIGVtaXRWYWx1ZVByb2ZpbGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAg
ICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShzdGF0aWNfY2FzdDxWYWx1ZVByb2ZpbGUmPihwcm9m
aWxlKSk7CiAgICAgICAgIH0pOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKQEAg
LTg3OCwxNSArODc4LDEzIEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVu
dEluc3RydWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVj
b2RlLm1ldGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVy
ZT4qIGNhY2hlZFN0cnVjdHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBT
dHJ1Y3R1cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1
cmVJRDsKICAgICBlbWl0R2V0VmlydHVhbFJlZ2lzdGVyKGJ5dGVjb2RlLm1fc3JjRHN0Lm9mZnNl
dCgpLCByZWdUMSk7CiAKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDEpOwog
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QxLCBGaW5hbE9iamVjdFR5cGUp
KTsKLSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOwotICAgIGFkZFNsb3dDYXNl
KGJyYW5jaFRlc3RQdHIoWmVybywgcmVnVDIpKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMiwg
U3RydWN0dXJlOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNo
ZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaDMyKE5vdEVxdWFs
LCBBZGRyZXNzKHJlZ1QxLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLCByZWdUMikpOwog
fQogCkBAIC05MDgsOCArOTA2LDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29u
c3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2FzZShicmFu
Y2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhjYWxsZWVS
ZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAgbG9hZFB0
cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZBbGxv
Y2F0b3IoKSksIGFsbG9jYXRvclJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVn
LCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJl
Zyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAg
IGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJv
dG90eXBlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKIAogICAgIGxvYWRQ
dHIoY2FjaGVkRnVuY3Rpb24sIGNhY2hlZEZ1bmN0aW9uUmVnKTsKICAgICBKdW1wIGhhc1NlZW5N
dWx0aXBsZUNhbGxlZXMgPSBicmFuY2hQdHIoRXF1YWwsIGNhY2hlZEZ1bmN0aW9uUmVnLCBUcnVz
dGVkSW1tUHRyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKSk7CkBAIC05MTks
OSArOTE3LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rp
b24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAgICAgYXV0
byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxvY2F0ZUpT
T2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0b3JSZWcs
IHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwotICAgIGVt
aXRHZXRWaXJ0dWFsUmVnaXN0ZXIoY2FsbGVlLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkUHRyKEFk
ZHJlc3Moc2NyYXRjaFJlZywgSlNGdW5jdGlvbjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgc2NyYXRj
aFJlZyk7Ci0gICAgbG9hZDMyKEFkZHJlc3Moc2NyYXRjaFJlZywgRnVuY3Rpb25SYXJlRGF0YTo6
b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6Om9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSksIHNjcmF0Y2hSZWcpOworICAgIGxvYWQ4KEFk
ZHJlc3Moc3RydWN0dXJlUmVnLCBTdHJ1Y3R1cmU6OmlubGluZUNhcGFjaXR5T2Zmc2V0KCkpLCBz
Y3JhdGNoUmVnKTsKICAgICBlbWl0SW5pdGlhbGl6ZUlubGluZVN0b3JhZ2UocmVzdWx0UmVnLCBz
Y3JhdGNoUmVnKTsKICAgICBhZGRTbG93Q2FzZShzbG93Q2FzZXMpOwogICAgIGVtaXRQdXRWaXJ0
dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9kc3Qub2Zmc2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCmluZGV4IDI1YTljOGYzNTBhZGMzZTY5NDQw
ZGFjYTM0ZDgyNDIyZWU0ZjE4MmMuLjk3YWUyZmJlNWIyZjM3NTk1NDQ0OGRlODVhODExMThkZWQ4
OWQwM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMy
XzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMzMl82NC5j
cHAKQEAgLTg5OSw3ICs4OTksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25zdCBJbnN0
cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVhY2goWyZd
IChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBKU1ZhbHVl
UmVncyByZWdzKHJlZ1QxLCByZWdUMCk7CiAgICAgICAgICAgICBlbWl0R2V0VmlydHVhbFJlZ2lz
dGVyKHByb2ZpbGUubV9vcGVyYW5kLCByZWdzKTsKLSAgICAgICAgICAgIGVtaXRWYWx1ZVByb2Zp
bGluZ1NpdGUocHJvZmlsZS5tX3Byb2ZpbGUpOworICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlKTsKICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShE
RkdfSklUKQpAQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhj
YWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVEYXRhUmVnKTsK
ICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVnKSk7Ci0gICAg
bG9hZDMyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRP
ZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURh
dGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUo
KSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0
dXJlUmVnKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0
YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsK
KyAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0
aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7CiAKICAgICBs
b2FkUHRyKGNhY2hlZEZ1bmN0aW9uLCBjYWNoZWRGdW5jdGlvblJlZyk7CiAgICAgSnVtcCBoYXNT
ZWVuTXVsdGlwbGVDYWxsZWVzID0gYnJhbmNoUHRyKEVxdWFsLCBjYWNoZWRGdW5jdGlvblJlZywg
VHJ1c3RlZEltbVB0cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSkpOwpAQCAt
MTAzMSw5ICsxMDMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMoY29uc3QgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93Q2FzZXM7CiAg
ICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAgIGVtaXRBbGxv
Y2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgpLCBhbGxvY2F0
b3JSZWcsIHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93Q2FzZXMpOwot
ICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRk
cmVzcyhzY3JhdGNoUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNo
UmVnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpv
ZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRk
cmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNj
cmF0Y2hSZWcpOwogICAgIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNj
cmF0Y2hSZWcpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFN0b3JlQ2Vs
bChieXRlY29kZS5tX2RzdC5vZmZzZXQoKSwgcmVzdWx0UmVnKTsKQEAgLTEwNDMsNyArMTA0MSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJ
bnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3RydWN0aW9uLT5h
czxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKG1f
Y29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4qIGNhY2hlZFN0cnVj
dHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmVJRCogY2Fj
aGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKICAgICBpbnQg
dGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCk7CiAKICAgICBlbWl0TG9h
ZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CkBAIC0xMDUxLDcgKzEwNDksNyBAQCB2b2lk
IEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5zdHJ1Y3Rp
b24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAgICAgYWRkU2xv
d0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsKICAgICBsb2Fk
UHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QwKTsK
LSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGxvYWQzMihjYWNoZWRT
dHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihOb3RFcXVhbCwg
cmVnVDAsIHJlZ1QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJh
dGlvbnMuY3BwCmluZGV4IDVhMDAzYWFmMzAwMzFmZDM2MWRmNDBiN2RlN2EyNmIyNTZmOGVjZDgu
LjEyYjc4YWFkZjQ1ODlkZDQ4M2NjODc5MmQyZDYzODYzNTE5OTBlZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTY5NSw3ICsxNjk1LDcgQEAg
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hBbmRWYWx1ZVBy
b2ZpbGUoRXhlY1N0YXRlKiBleGVjLAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8m
IG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBtZXRhZGF0YS5t
X2J1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsK
LSAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAg
IHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIo
cHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAKaW5kZXggNTE5YWQ3YWVjMzY0YWJhOTI2NjAxNGMyZDNlYjQ2MmQyNTliMzcxMy4uOWQ2MjE0
ODFmNzc0NzRlZmI4MzFiZDRlNWYxZjU4MjI5ZTMzMjU1NiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU4Myw3ICs1ODMsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0
cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAsIGJhc2VWUmVn
KTsKICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAm
JiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1v
ZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZSks
IFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5n
dGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVh
bCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3Rl
ZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsK
ICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMSwgJm1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpOwogICAg
ICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCAyZTkwYzcwMWRhMWVj
NzViMTgyMmFhNmQ3YjNiZTdjNzQyNmYyNWI3Li4yNTRmY2RjZGRhZmQ2MjRjMDc1ODAxMDc2Yzgw
N2Q4Nzc3ZjFmZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNs
b3dQYXRocy5jcHAKQEAgLTc0MCwxOSArNzQwLDI0IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJ
ZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBjb25zdCBJbnN0cnVjdGlv
CiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAKICAg
ICBpZiAoc2xvdC5pc1Vuc2V0KCkpIHsKLSAgICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJ
ZE1vZGU6OlVuc2V0OworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0
QnlJZE1vZGU6OlVuc2V0OwogICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1v
ZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgpKTsKIAotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdl
dEJ5SWRNb2RlOjpQcm90b0xvYWQ7CisgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
IEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ7IC8vIFRoaXMgbXVzdCBiZSBmaXJzdCBzZXQuIEluIDY0
Yml0IGFyY2hpdGVjdHVyZSwgdGhpcyBmaWVsZCBpcyBzaGFyZWQgd2l0aCBwcm90b0xvYWRNb2Rl
LmNhY2hlZFNsb3QuCiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5z
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldCA9IG9mZnNldDsKLSAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPSBzbG90LnNsb3RCYXNlKCk7CiAg
ICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgcG9pbnRlciB3aWxsIHJlbWFpbiB2YWxpZCBiZWNhdXNl
IGl0IHdpbGwgYmUgY2xlYXJlZCBieSBlaXRoZXIgYSB3YXRjaHBvaW50IGZpcmUgb3IKICAgICAv
LyBkdXJpbmcgR0Mgd2hlbiB3ZSBjbGVhciB0aGUgTExJbnQgY2FjaGVzLgogICAgIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdCA9IHNsb3Quc2xvdEJhc2Uo
KTsKKworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRN
b2RlOjpQcm90b0xvYWQpOworICAgIEFTU0VSVCghbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0
Q291bnRGb3JMTEludENhY2hpbmcpOworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEID09IHN0cnVjdHVyZS0+aWQoKSk7CisgICAgQVNT
RVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0ID09
IG9mZnNldCk7CisgICAgQVNTRVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuY2FjaGVkU2xvdCA9PSBzbG90LnNsb3RCYXNlKCkpOwogfQogCiAKQEAgLTc3NSw4ICs3ODAs
NyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICAm
JiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKICAgICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJl
SUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAgICAgICBhdXRvIG1vZGUgPSBtZXRhZGF0YS5tX21v
ZGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkgewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9k
ZTo6RGVmYXVsdDoKICAgICAgICAgICAgICAgICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtODA0LDEyICs4MDgsMTIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9ieV9pZCkKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNsb3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAgICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBv
dXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRN
b2RlOjpEZWZhdWx0OworICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9
IEdldEJ5SWRNb2RlOjpEZWZhdWx0OwogICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAg
Ly8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAg
ICAgICAgICBtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsK
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoc3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJl
Q2FjaGVhYmxlKCkKICAgICAgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJv
cGVydHlXYXRjaHBvaW50KCkpIHsKQEAgLTgyMCwyMSArODI0LDIyIEBAIExMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAg
ICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVk
T2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChz
bG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAo
VU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcg
JiYgKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSkpIHsKICAgICAgICAgICAgIEFT
U0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFzZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEo
LS1tZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICgh
KC0tbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAg
ICAgICAgICAgICAgIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKGV4ZWMsIHZtLCBwYywgbWV0
YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVudCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYg
KCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cKICAgICAgICAgJiYgaXNKU0FycmF5KGJhc2VWYWx1
ZSkKICAgICAgICAgJiYgaWRlbnQgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7Ci0gICAg
ICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aDsKLSAgICAgICAg
bmV3ICgmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSkgQXJyYXlQcm9maWxlKGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQocGMpKTsKKyAgICAgICAg
Q29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjb2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Cisg
ICAgICAgIG5ldyAoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJh
eVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
YXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5h
c0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAKICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90
eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5o
aXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CiAgICAgfQogCiAgICAgTExJTlRfUFJPRklMRV9W
QUxVRShyZXN1bHQpOwpAQCAtMTUwMiwxMiArMTUwNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luCiAgICAgICAgICAgICAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKIAogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIo
Y2FsbGVyQ29kZUJsb2NrLT5tX2xvY2spOwotCi0gICAgICAgICAgICAgICAgaWYgKGNhbGxMaW5r
SW5mby0+aXNPbkxpc3QoKSkKLSAgICAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1v
dmUoKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQodm0sIGNhbGxl
ckNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgaW50ZXJuYWxGdW5j
dGlvbik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9
IGNvZGVQdHI7CisgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJD
b2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24sIGNvZGVQdHIpOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBhc3NlcnRJc1RhZ2dlZFdpdGgoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
LCBKU0VudHJ5UHRyVGFnKTsKQEAgLTE1NTAsMTIgKzE1NTAsNyBAQCBpbmxpbmUgU2xvd1BhdGhS
ZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbgogICAgICAgICBDb2RlQmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOwogCiAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY2FsbGVyQ29kZUJs
b2NrLT5tX2xvY2spOwotICAgICAgICAKLSAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxp
c3QoKSkKLSAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7Ci0gICAgICAgIGNhbGxM
aW5rSW5mby0+Y2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUpOwotICAgICAg
ICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBj
YWxsZWUpOwotICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxl
ZSwgY29kZVB0cik7CiAgICAgICAgIGlmIChjb2RlQmxvY2spCiAgICAgICAgICAgICBjb2RlQmxv
Y2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYywgY2FsbExpbmtJbmZvKTsKICAgICB9CkBAIC0xOTI4
LDcgKzE5MjMsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRj
aCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMtPmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0
YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+
Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAg
cHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUu
bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5t
X29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICBMTElOVF9FTkQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJf
NjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIz
Ml82NC5hc20KaW5kZXggYzc3ZmI3ZTM2YmNkZTUzZWEzNGFkZTdlNDgzOTA2YWVjNWJmMzYzMi4u
YzJlNjBhYjZkZmIwYjJkOGQ4ODY4NzUwY2Y1OGJlOWYzMzVhMTBkZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c20KQEAgLTc0NSw3ICs3NDUsNyBAQCBsbGludE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9w
VG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsCiAgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0
MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xvdwogICAgIG1ldGFkYXRhKHQyLCB0MykK
LSAgICBsb2FkcCBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIK
KyAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0
MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93
CiAgICAgZGlzcGF0Y2goKQogCkBAIC0xMzQ0LDcgKzEzNDQsNyBAQCBlbmQpCiAKIGxsaW50T3BX
aXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRp
c3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBsb2Fk
YiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVbdDVdLCB0MQorICAgIGxvYWRiIE9wR2V0QnlJ
ZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDVdLCB0MQogICAgIGdldChtX2Jhc2Us
IHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2FkOgpAQCAtMTgyMyw3ICsxODIzLDcgQEAgbWFjcm8g
YXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAgICAgYmluZXEgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCBDZWxsVGFnLCAuZG9uZQogICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQw
CiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDAKLSAgICBzdG9yZWkgdDAs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVj
dHVyZUlEW3Q1XQorICAgIHN0b3JlaSB0MCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCiAuZG9u
ZToKIGVuZAogCkBAIC0xODM2LDcgKzE4MzYsNyBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2Rl
TmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAg
ICAgICBlbmQsIG1ldGFkYXRhKQogCiAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAg
IGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8uY2FsbGVlW3Q1
XSwgdDIKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5r
SW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCiAgICAgICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9w
Q2FsbFNsb3cpCiAgICAgICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKICAgICAgICAgZ2V0
dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCkBAIC0xODQ5LDggKzE4NDksOCBAQCBt
YWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJl
cGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQ
YXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zm
c2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2Rl
U3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwg
dDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNp
emUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAg
ICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1f
bWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgICAg
ICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgogICAgICAgICBzbG93UGF0aEZv
ckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxs
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlcjY0LmFzbQppbmRleCBjODA3NDM1ODQ1MDljZmVlMzA5OTNhNmViMTEyNTVkMjEzMzUxYzYy
Li44MTE5ZGEyY2JmZjdhYjQ4MjAzMmI3MmFkMzM3YjUxYWJmYjE5YzM1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpA
QCAtNzAxLDEwICs3MDEsMTAgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRv
VGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLAogICAgIGxvYWRxIFtj
ZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAg
IGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93
Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3JhdGNoKHQwLCB0MSwgdDIsIHQzKQorICAgIGxvYWRp
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQxCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAg
IGxvYWRwIE9wVG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCB0MgotICAg
IGJwbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xvdworICAgIGxvYWRpIE9wVG9UaGlzOjpNZXRhZGF0
YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCisgICAgYmluZXEgdDEsIHQyLCAub3BUb1Ro
aXNTbG93CiAgICAgZGlzcGF0Y2goKQogCiAub3BUb1RoaXNTbG93OgpAQCAtMTI4OCw3ICsxMjg4
LDcgQEAgZW5kKQogCiBsbGludE9wV2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlk
LCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRh
ZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlW3QyXSwg
dDEKKyAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2RlW3Qy
XSwgdDEKICAgICBnZXQobV9iYXNlLCB0MCkKICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2Vs
bChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRTbG93KQogCkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBt
YWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29kZVN0cnVjdCwgZ2V0dSkKICAgICBsb2FkcSBU
aGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ss
IC5kb25lCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3QwXSwgdDMKLSAgICBzdG9y
ZWkgdDMsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9hcnJheVByb2ZpbGUubV9sYXN0U2Vl
blN0cnVjdHVyZUlEW3Q1XQorICAgIHN0b3JlaSB0MywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVd
CiAuZG9uZToKIGVuZAogCkBAIC0xOTMxLDcgKzE5MzEsNyBAQCBtYWNybyBjb21tb25DYWxsT3Ao
b3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3Vl
KQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCiAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0g
ICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8uY2Fs
bGVlW3Q1XSwgdDIKKyAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2Nh
bGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCiAg
ICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUoc2l6ZSwgdDAsIHQzKQogICAgICAgICBicW5l
cSB0MywgdDIsIC5vcENhbGxTbG93CiAgICAgICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBt
X2FyZ3YsIHQzKQpAQCAtMTk0Myw4ICsxOTQzLDggQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAg
ICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KICAgICAgICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgbW92
ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjpt
X2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQ
dHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRp
c3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVD
b2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1
XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9u
KHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAK
ICAgICAub3BDYWxsU2xvdzoKICAgICAgICAgc2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wY29kZVN0
cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDg1NDQxODg4MzZm
ZTY4OWNkOGE2N2QyYmZmNDM3MjUyMTczY2Y1YmUuLjRlNzhhNDhkNmQxOWViOWIwNmQzYzllZDA3
NGU5NTgxMTJkMDhhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjQyLDcgKzI0Miw3IEBAIFNMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICAgICAgICAgIGNhY2hlZENhbGxlZS5zZXRXaXRob3V0
V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKIAogICAg
ICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkgPSBieXRlY29kZS5tX2lubGluZUNhcGFjaXR5Owot
ICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSogYWxsb2NhdGlvblByb2ZpbGUgPSBjb25z
dHJ1Y3Rvci0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVD
YXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CisgICAgICAgIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSogYWxsb2NhdGlvblByb2ZpbGUgPSBjb25zdHJ1Y3Rv
ci0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0
eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIHRocm93U2NvcGUucmVsZWFz
ZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWxs
b2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpOwpAQCAtMjcyLDE2ICsyNzIsMTcgQEAgU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMpCiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShleGVjKTsKICAgICBKU1ZhbHVlIHYxID0gR0VUKGJ5dGVjb2RlLm1fc3JjRHN0
KS5qc1ZhbHVlKCk7CiAgICAgaWYgKHYxLmlzQ2VsbCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSog
bXlTdHJ1Y3R1cmUgPSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKTsKLSAgICAgICAgU3RydWN0
dXJlKiBvdGhlclN0cnVjdHVyZSA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlLmdldCgpOwot
ICAgICAgICBpZiAobXlTdHJ1Y3R1cmUgIT0gb3RoZXJTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAg
IGlmIChvdGhlclN0cnVjdHVyZSkKKyAgICAgICAgU3RydWN0dXJlSUQgbXlTdHJ1Y3R1cmVJRCA9
IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgpOworICAgICAgICBTdHJ1Y3R1cmVJRCBvdGhlclN0
cnVjdHVyZUlEID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWYgKG15
U3RydWN0dXJlSUQgIT0gb3RoZXJTdHJ1Y3R1cmVJRCkgeworICAgICAgICAgICAgaWYgKG90aGVy
U3RydWN0dXJlSUQpCiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBU
b1RoaXNDb25mbGljdGVkOwotICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUu
c2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwgbXlTdHJ1Y3R1cmUpOworICAgICAgICAgICAgbWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IG15U3RydWN0dXJlSUQ7CisgICAgICAgICAgICB2
bS5oZWFwLndyaXRlQmFycmllcihleGVjLT5jb2RlQmxvY2soKSwgdm0uZ2V0U3RydWN0dXJlKG15
U3RydWN0dXJlSUQpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIG1ldGFkYXRh
Lm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgbWV0YWRhdGEubV9j
YWNoZWRTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1
cmVJRCA9IDA7CiAgICAgfQogICAgIC8vIE5vdGU6IFdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIHZh
bHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBzbG93IHBhdGguIFRoZSBmYXN0IHBhdGgKICAgICAv
LyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRvIHRvX3RoaXMgaWYgdGhlIHN0cnVjdHVyZSBjaGVj
ayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVyZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCmluZGV4IGE2YTZkZjAwZDQ1NDc4OTgwMTkwNGZm
NWVlY2VhMjJiZGRjNzkyMWMuLjJlZGEzMmJhMzg1MzYxMGQwMWE5NDVhNmE0OWY1ZmE0MDRjM2Iz
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVE
YXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xhc3MgRnVuY3Rpb25SYXJlRGF0YSBmaW5hbCA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFy
ZURhdGEsIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOwogICAgIH0KIAotICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCisgICAgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlKiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCiAg
ICAgewogICAgICAgICByZXR1cm4gJm1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgfQpA
QCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAvLwogICAgIC8vIFdlIGRvbid0IHJlYWxseSBjYXJlIGFib3V0IDEpIHNp
bmNlIHRoaXMgbWVtb3J5IGlzIHJhcmUgYW5kIHNtYWxsIGluIHRvdGFsLiAyKSBpcyB1bmZvcnR1
bmF0ZSBidXQgaXMKICAgICAvLyBwcm9iYWJseSBvdXR3ZWlnaGVkIGJ5IHRoZSBjb3N0IG9mIDMp
LgotICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7
CisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlIG1fb2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGU7CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCBtX29iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludDsKICAgICBJbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUg
bV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3RydWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAppbmRleCBkNzczZDg1NWZmYzJlMDE1NDhlY2Y2ZGFh
OGNkOGQ1NTU5MWM4Yzk2Li4wNWU0MDk5YjE2NGM2YThhMWQ3MTM3NGNmZGM0NWI2MmQ4Mzg2MGU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcApAQCAt
MzMwLDcgKzMzMCw3IEBAIGJvb2wgSGVhcFZlcmlmaWVyOjp2YWxpZGF0ZUpTQ2VsbChWTSogZXhw
ZWN0ZWRWTSwgSlNDZWxsKiBjZWxsLCBDZWxsUHJvZmlsZSogcHJvCiAgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0ganNEeW5hbWljQ2FzdDxDb2RlQmxvY2sqPih2bSwgY2VsbCk7CiAgICAg
ICAgIGlmIChVTkxJS0VMWShjb2RlQmxvY2spKSB7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3Mg
PSB0cnVlOwotICAgICAgICAgICAgY29kZUJsb2NrLT5mb3JFYWNoVmFsdWVQcm9maWxlKFsmXShW
YWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSkgeworICAgICAgICAgICAgY29kZUJsb2NrLT5mb3JF
YWNoVmFsdWVQcm9maWxlKFsmXShWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSwgYm9vbCkgewog
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBWYWx1ZVByb2ZpbGU6OnRv
dGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsKICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2YWx1ZVByb2ZpbGUubV9idWNrZXRzW2ldKTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370144</attachid>
            <date>2019-05-17 13:43:42 -0700</date>
            <delta_ts>2019-05-17 13:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517134341.patch</filename>
            <type>text/plain</type>
            <size>79688</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5mZTVlZDdlOGUwZWE5NmQ2
YzllZGNlNGVkY2RmZmEzZTVkOTFlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gc2hyaW5rIE1ldGFkYXRhLiBUaGlzIHBhdGNoIGZpcnN0IGZvY3VzIG9uIGxvdyBoYW5naW5n
IGZydWl0czogaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhbmdlIHJlbW92aW5nIE9TUiBleGl0
IEpTVmFsdWUgaW4gVmFsdWVQcm9maWxlLgorICAgICAgICBUaGlzIHBhdGNoIHVzZXMgZmFuY3kg
Yml0IGp1Z2dsaW5nICYgbGV2ZXJhZ2VzIG5pY2UgZGF0YSB0eXBlcyB0byByZWR1Y2UgTWV0YWRh
dGEsIGFzIGZvbGxvd3MuCisKKyAgICAgICAgMS4gVmFsdWVQcm9maWxlIGlzIHJlZHVjZWQgZnJv
bSAzMiB0byAyNC4gSXQgcmVkdWNlcyBNZXRhZGF0YSB1c2luZyBWYWx1ZVByb2ZpbGUuCisgICAg
ICAgIDIuIEFycmF5UHJvZmlsZSBpcyByZWR1Y2VkIGZyb20gMTYgdG8gMTIuIERpdHRvLgorICAg
ICAgICAzLiBPcENhbGw6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA4OCB0byA2NC4KKyAgICAg
ICAgNC4gT3BHZXRCeUlkOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNTYgdG8gNDAuCisgICAg
ICAgIDUuIE9wVG9UaGlzOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNDggdG8gMzIuCisgICAg
ICAgIDYuIE9wTmV3T2JqZWN0OjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gMzIgdG8gMTYuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBnYXRoZXJlZCBkYXRhLCBpdCBzaG91bGQgcmVkdWNl
IDEtMk1CIGluIHN0ZWFkeSBzdGF0ZSBpbiBHbWFpbCwgbXVjaCBtb3JlIGluIHBlYWsgbWVtb3J5
LCB+MSBNQiBpbiB0aGUgc3RhdGUganVzdCBhZnRlciBmdWxsIEdDLgorICAgICAgICBJdCBhbHNv
IGltcHJvdmVzIFJBTWlmaWNhdGlvbiBieSAwLjMlICg2IHJ1bnMpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICBXZSB1c2UgUHJv
dG9Mb2FkJ3MgSlNPYmplY3QncyBoaWdoIGJpdHMgdG8gZW1iZWQgaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgYW5kIG1vZGUsIHNpbmNlIHRoZXkKKyAgICAgICAgYXJlIGFsd2F5cyB6ZXJvIGZvciBQ
cm90b0xvYWQgbW9kZS4KKworICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxM
aW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgSW4gTExJbnRDYWxsTGlua0luZm8sIHdlIGFsd2F5cyBzZXQg
dGhlIHNhbWUgdmFsdWUgdG8gbGFzdFNlZW5DYWxsZWUgYW5kIGNhbGxlZS4gQnV0IGxhdGVyLCBj
YWxsZWUgY2FuIGJlIGNsZWFyZWQuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgd2UgY2FuIHJlcHJl
c2VudCB0aGVtIGluIG9uZSB2YWx1ZSArIGNsZWFyZWQgZmxhZy4gV2UgZW5jb2RlIHRoaXMgZmxh
ZyBpbnRvIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBjYWxsZWUgY2VsbCBzbworICAgICAgICB0aGF0
IHdlIGNhbiBtYWtlIHRoZW0gb25lIHBvaW50ZXIuIFdlIGFsc28gdXNlIFBhY2tlZFJhd1NlbnRp
bmVsTm9kZSB0byBnZXQgc29tZSBzcGFjZSwgYW5kIGVtYmVkIEFycmF5UHJvZmlsZSBpbnRvIHRo
aXMgc3BhY2UKKyAgICAgICAgdG8gZ2V0IGZ1cnRoZXIgbWVtb3J5IHJlZHVjdGlvbi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpidWZmZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6b2Zmc2V0T2ZBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpjbGVhcik6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpwcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2Fw
YWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5saW5lQ2FwYWNpdHkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46Omlu
aXRpYWxpemVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICBPcE5ld09iamVjdCdzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBwcm90b3R5cGUuIFNvIHdlIGhhdmUg
dHdvIHZlcnNpb25zIG5vdywgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgYW5kIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZQorICAgICAgICB0byBjdXQgb25lIHBvaW50ZXIuIFdl
IGFsc28gcmVtb3ZlIGlubGluZSBjYXBhY2l0eSBzaW5jZSB0aGlzIGNhbiBiZSByZXRyaWV2ZWQg
ZnJvbSBTdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRv
dGFsTnVtYmVyT2ZTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6aXNTYW1wbGVkQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVBy
b2ZpbGVCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBp
cyBubyBsb25nZXIgdXNlZC4gQW5kIHNhbXBsZSBjb3VudCBpcyBub3QgdXNlZCBlZmZlY3RpdmVs
eS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiB0
b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlk
YXRlSlNDZWxsKToKKwogMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2lu
dGVycyBpbiBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCmluZGV4IGMwMGFlZjIxYjZlYmI2MTllOTFjNzQ2YWY0ZmIwOWM1ODRmZDY2
YmIuLjNlMTUwYTAxMjM5NmIxMjgyNDUyOGE1ZTlmMmI5ODM3ZThjN2RlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0zMywxMCAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLWNvbnN0
IGNoYXIqIGNvbnN0IEFycmF5UHJvZmlsZTo6c190eXBlTmFtZSA9ICJBcnJheVByb2ZpbGUiOwot
I2VuZGlmCi0KIC8vIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBvcmRlciBvZiBUeXBlZEFycmF5VHlw
ZS4KIGNvbnN0IEFycmF5TW9kZXMgdHlwZWRBcnJheU1vZGVzW051bWJlck9mVHlwZWRBcnJheVR5
cGVzRXhjbHVkaW5nRGF0YVZpZXddID0gewogICAgIEludDhBcnJheU1vZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0
MmE1NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4
YzBlOGRlMjM3YjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFy
cmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAg
IEFycmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFy
cmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjM4LDE2ICsy
MjksMTEgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKICAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSA9PSBzX3R5cGVOYW1lOyB9Ci0jZW5kaWYKLQogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsg
Ly8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVj
aWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBp
dCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2lj
YWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdl
KSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1w
bGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwpAQCAtMjU1LDEzICsyNDEs
NyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OwotCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVOYW1lOwotICAg
IGNvbnN0IGNoYXIqIG1fdHlwZU5hbWUgeyBzX3R5cGVOYW1lIH07Ci0jZW5kaWYKIH07Ci0KLXR5
cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgND4gQXJyYXlQcm9maWxlVmVjdG9y
Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMDY5NWEyNTA3YjYyMzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uY2Rl
ZTU2OWM4ZDAyMGIwZDc5M2NlODRhZTg4YWM1ZGJlMWI1MTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAK
ICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
KyAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNT
dGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KQEAgLTQxNCw4ICs0MTQsNiBAQAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAg
aGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CkBAIC03MDYsNyArNzA0LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBA
IC03MTksNyArNzE2LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxM
aW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03MzIs
NyArNzI4LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03ODcsNyArNzgy
LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uYmFlNTg5MTE5NDA3MTY0MmNkMzRjY2MyZTYxMDExZDNlYTM1OGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRh
ZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2Fs
bExpbmtJbmZvKFsmXShMTEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAg
IGlmIChjYWxsTGlua0luZm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlu
a0luZm8uY2FsbGVlLmdldCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2Vk
KCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnVubGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5r
SW5mby5sYXN0U2VlbkNhbGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFz
dFNlZW5DYWxsZWUuZ2V0KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2Fs
bGVlLmNsZWFyKCk7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAm
JiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAg
ICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQog
CkBAIC0yNTc1LDE3ICsyNTY4LDI0IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJh
eVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0CiB7CiAgICAg
YXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAg
ICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwK
KyNkZWZpbmUgQ0FTRTEoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAogICAgICAgICBy
ZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmls
ZTsKIAotICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ0FTRSkKLSN1bmRl
ZiBDQVNFCisjZGVmaW5lIENBU0UyKE9wKSBcCisgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKKyAg
ICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9jYWxs
TGlua0luZm8ubV9hcnJheVByb2ZpbGU7CisKKyAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJB
WV9QUk9GSUxFKENBU0UxKQorICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElO
S19JTkZPKENBU0UyKQorCisjdW5kZWYgQ0FTRTEKKyN1bmRlZiBDQVNFMgogCiAgICAgY2FzZSBP
cEdldEJ5SWQ6Om9wY29kZUlEOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkPigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKHRoaXMpOwotICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2Rl
OjpBcnJheUxlbmd0aCkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0yNjMzLDE2ICsyNjMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRh
dGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5v
bkFyCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgogCi0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShb
Jl0oVmFsdWVQcm9maWxlJiBwcm9maWxlKSB7CisgICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0o
VmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKICAgICAgICAgdW5zaWdu
ZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUudG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKICAgICAg
ICAgaWYgKG51bVNhbXBsZXMgPiBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cykKICAgICAg
ICAgICAgIG51bVNhbXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2Ug
ZG9uJ3Qgd2FudCBwcm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1v
cmUgd2VpZ2h0LgogICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBs
ZXM7Ci0gICAgICAgIGlmIChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7CiAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChwcm9maWxlLm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUubV9wcmVkaWN0aW9uICE9
IFNwZWNOb25lKQorICAgICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9m
aWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlcik7CiAgICAgfSk7CkBAIC0yNjUwLDcgKzI2NTEsNyBAQCB2b2lkIENvZGVCbG9j
azo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJP
ZkxpdmVOb25BcgogICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9m
aWxlcykgewogICAgICAgICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlLm1fcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yODAwLDEyICsyODAxLDExIEBAIHZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVl
UHJvZmlsZXMoKQogewogICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6
XG4iKTsKLSAgICBmb3JFYWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkg
ewotICAgICAgICBpZiAocHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewotICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBk
YXRhTG9nRigiICAgYXJnID0gJXU6ICIsIGkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGRhdGFMb2dGKCIgICBiYyA9ICVkOiAiLCBwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQpOworICAg
IGZvckVhY2hWYWx1ZVByb2ZpbGUoW10oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJn
dW1lbnQpIHsKKyAgICAgICAgaWYgKGlzQXJndW1lbnQpCisgICAgICAgICAgICBkYXRhTG9nRigi
ICAgYXJnOiAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjOiAi
KTsKICAgICAgICAgaWYgKCFwcm9maWxlLm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUubV9w
cmVkaWN0aW9uID09IFNwZWNOb25lKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiPGVtcHR5Plxu
Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBhOTNjMzZmYjkxOGYzYjMwY2FiMGM3OThlNjFlNzBjYTU5MWIx
OGNmLi5mNWRiZmVjNjk0YmQxNDcyYjk5YWM1ZjBlYjMxZDBkMGFkMGNmZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00NzgsNyArNDc4LDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBBU1NFUlQo
dm0oKS0+Y2FuVXNlSklUKCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlv
dXMgSklUIGNvbXBpbGVycyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcyBiZWZvcmUgY2FsbGluZyB0aGlzLgogICAgICAgICBWYWx1ZVByb2Zp
bGUmIHJlc3VsdCA9IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAg
ICAgICBBU1NFUlQocmVzdWx0Lm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtOTc0LDcgKzk3Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIFZNKiBtX3ZtOwogCiAgICAgY29uc3Qgdm9pZCogbV9pbnN0
cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxM
TEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
PiBtX2luY29taW5nTExJbnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxs
TGlua0luZm8sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5j
b21pbmdMTEludENhbGxzOwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5
SWRXYXRjaHBvaW50TWFwOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5B
QkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCmluZGV4IGYwMGIzOTc4NzMyZTRmNjdkZDJlNTU2MTA0NzdmZGMyZjdhNWNhY2Iu
LjIyZTc2YjE4NWViOWViYTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzUsMTEg
KzM1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9y
RWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCi0gICAg
ICAgIGZ1bmModmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkpOworICAgICAgICBmdW5jKHZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGkpLCB0cnVlKTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAj
ZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0
YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhf
VkFMVUVfUFJPRklMRShWSVNJVCkKIApAQCAtNTMsMTYgKzUzLDIxIEBAIHZvaWQgQ29kZUJsb2Nr
Ojpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgPT0gR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSk7CiAgICAgICAgIH0pOwogCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyNkZWZpbmUgVklTSVQx
KF9fb3ApIFwKICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCi0gICAgICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQpCisjZGVmaW5lIFZJU0lUMihfX29w
KSBcCisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKIAotI3Vu
ZGVmIFZJU0lUCisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklT
SVQxKQorICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhW
SVNJVDIpCisKKyN1bmRlZiBWSVNJVDEKKyN1bmRlZiBWSVNJVDIKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBk
YzQzNGU2YzRiN2ZkNGVkODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi44NTI0OWI1NTY2MDg3ZGFm
MmE1N2VlZWMwYzg2Mjc3MjZmOGI4Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsODcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0gICAgRGVmYXVs
dCA9IDAsCi0gICAgVW5zZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAgUHJvdG9Mb2Fk
ID0gMCwgLy8gVGhpcyBtdXN0IGJlIHplcm8gdG8gcmV1c2UgdGhlIGhpZ2hlciBiaXRzIG9mIHRo
ZSBwb2ludGVyIGFzIHRoaXMgUHJvdG9Mb2FkIG1vZGUuCisgICAgRGVmYXVsdCA9IDEsCisgICAg
VW5zZXQgPSAyLAogICAgIEFycmF5TGVuZ3RoID0gMywKIH07CiAKK3N0cnVjdCBHZXRCeUlkTW9k
ZU1ldGFkYXRhRGVmYXVsdCB7CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OworICAgIHVuc2lnbmVkIHBhZGRpbmcxOworfTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0KSA9PSAxMik7CisK
K3N0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgeworICAgIFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEOworICAgIHVuc2lnbmVkIHBhZGRpbmcxOworICAgIHVuc2lnbmVkIHBhZGRpbmcyOwor
fTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIp
OworCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIHsKKyAgICBBcnJheVBy
b2ZpbGUgYXJyYXlQcm9maWxlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2Rl
TWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIpOworCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0
YVByb3RvTG9hZCB7CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0OworICAgIEpTT2JqZWN0KiBjYWNoZWRTbG90OworfTsKKyNpZiBD
UFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdldEJ5SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQpID09IDE2KTsKKyNlbmRpZgorCisvLyBJbiA2
NGJpdCBMaXR0bGUgZW5kaWFuIGFyY2hpdGVjdHVyZSwgdGhpcyB1bmlvbiBzaGFyZXMgUHJvdG9M
b2FkJ3MgSlNPYmplY3QqIGNhY2hlZFNsb3Qgd2l0aCAiaGl0Q291bnRGb3JMTEludENhY2hpbmci
IGFuZCAibW9kZSIuCisvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgdGhlc2UgdmFsdWVzIG11
c3QgYmUgemVybyBpZiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCisjaWYgQ1BVKExJVFRMRV9FTkRJ
QU4pICYmIENQVShBRERSRVNTNjQpCiB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhKCkKLSAgICB7IH0KLQotICAgIHN0cnVjdCBEZWZhdWx0IHsKLSAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldDsKLSAgICB9IGRlZmF1bHRNb2RlOwotCi0gICAgc3RydWN0IFVuc2V0IHsKLSAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgfSB1bnNldE1vZGU7Ci0KLSAgICBz
dHJ1Y3QgUHJvdG9Mb2FkIHsKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICAgICAgSlNPYmplY3QqIGNhY2hl
ZFNsb3Q7Ci0gICAgfSBwcm90b0xvYWRNb2RlOwotCi0gICAgc3RydWN0IEFycmF5TGVuZ3RoIHsK
LSAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKLSAgICB9IGFycmF5TGVuZ3RoTW9k
ZTsKKyAgICB7CisgICAgICAgIGRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAg
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKKyAgICAgICAgZGVmYXVsdE1vZGUucGFkZGlu
ZzEgPSAwOworICAgICAgICBtb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgICAgIGhp
dENvdW50Rm9yTExJbnRDYWNoaW5nID0gT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTElu
dENhY2hpbmcoKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBwYWRk
aW5nMTsKKyAgICAgICAgdWludDMyX3QgcGFkZGluZzI7CisgICAgICAgIHVpbnQzMl90IHBhZGRp
bmczOworICAgICAgICB1aW50MTZfdCBwYWRkaW5nNDsKKyAgICAgICAgR2V0QnlJZE1vZGUgbW9k
ZTsKKyAgICAgICAgdWludDhfdCBoaXRDb3VudEZvckxMSW50Q2FjaGluZzsgLy8gVGhpcyBtdXN0
IGJlIHplcm8gd2hlbiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCisgICAgfTsKKyAgICBHZXRCeUlk
TW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKKyAgICBHZXRCeUlkTW9kZU1ldGFkYXRh
VW5zZXQgdW5zZXRNb2RlOworICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJh
eUxlbmd0aE1vZGU7CisgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCBwcm90b0xvYWRN
b2RlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGEpID09IDE2
KTsKKyNlbHNlCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YSB7CisgICAgR2V0QnlJZE1vZGVN
ZXRhZGF0YSgpCisgICAgeworICAgICAgICBkZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CisgICAgICAgIGRlZmF1bHRNb2Rl
LnBhZGRpbmcxID0gMDsKKyAgICAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OworICAg
ICAgICBoaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IE9wdGlvbnM6OnByb3RvdHlwZUhpdENvdW50
Rm9yTExJbnRDYWNoaW5nKCk7CisgICAgfQorCisgICAgdW5pb24geworICAgICAgICBHZXRCeUlk
TW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRh
ZGF0YVVuc2V0IHVuc2V0TW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVu
Z3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9h
ZCBwcm90b0xvYWRNb2RlOworICAgIH07CisgICAgR2V0QnlJZE1vZGUgbW9kZTsKKyAgICB1aW50
OF90IGhpdENvdW50Rm9yTExJbnRDYWNoaW5nOwogfTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAppbmRleCA2ZTRlOGJmZGJlMTc1YzA2YmY5ODJlODM0MGVjNjQyYzM5YzIwMTg2Li5kYjlh
ZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkCiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9w
cm90b19sb2FkLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MDM5Ci0gICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgIT0gR2V0QnlJZE1vZGU6
OkRlZmF1bHQpCisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgZmFsc2UpOwogICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKaW5k
ZXggODRiNWMxMWM1ODY2NWQzMmJiZDVjMjIwZDlhOTE4MzgyODRhMWUxNi4uN2MyN2NkZjY2ZTdh
OWJkZGFhMmY2YWJlYTI2MjhmY2I0NjkzOWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKQEAgLTM0LDEwICszNCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEluc3RydWN0aW9uOwogCi1zdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
IHsKLSAgICBMTEludENhbGxMaW5rSW5mbygpCi0gICAgewotICAgIH0KK2NsYXNzIExMSW50Q2Fs
bExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5m
bz4geworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCB1bmxpbmtlZEJpdCA9IDB4MTsKKworICAg
IExMSW50Q2FsbExpbmtJbmZvKCkgPSBkZWZhdWx0OwogICAgIAogICAgIH5MTEludENhbGxMaW5r
SW5mbygpCiAgICAgewpAQCAtNDUsMTkgKzQ4LDQ5IEBAIHN0cnVjdCBMTEludENhbGxMaW5rSW5m
byA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gewogICAg
ICAgICAgICAgcmVtb3ZlKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJl
dHVybiAhIWNhbGxlZTsgfQorICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiAhKG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ICYgdW5saW5rZWRCaXQpOyB9CiAgICAg
CisKKyAgICB2b2lkIGxpbmsoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKKyAgICB7Cisg
ICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgIG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oY2FsbGVlKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIsIGNhbGxlZSk7
CisgICAgICAgIG1fbWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgIH0KKwogICAgIHZv
aWQgdW5saW5rKCkKICAgICB7Ci0gICAgICAgIGNhbGxlZS5jbGVhcigpOwotICAgICAgICBtYWNo
aW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPigpOwor
ICAgICAgICAvLyBNYWtlIGxpbmsgaW52YWxpZGF0ZWQuIEl0IHdvcmtzIGJlY2F1c2UgTExJbnQg
dGVzdHMgdGhlIGdpdmVuIGNhbGxlZSB3aXRoIHRoaXMgcG9pbnRlci4gQnV0IGl0IGlzIHN0aWxs
IHZhbGlkIGFzIGxhc3RTZWVuQ2FsbGVlIQorICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxs
ZWVXaXRoTGlua0JpdCB8PSB1bmxpbmtlZEJpdDsKKyAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdl
dCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPigpOwogICAgICAgICBpZiAo
aXNPbkxpc3QoKSkKICAgICAgICAgICAgIHJlbW92ZSgpOwogICAgIH0KLSAgICAKLSAgICBXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+IGNhbGxlZTsKLSAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGxh
c3RTZWVuQ2FsbGVlOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBt
YWNoaW5lQ29kZVRhcmdldDsKKworICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFpc0xpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yTGFzdFNlZW5D
YWxsZWVXaXRoTGlua0JpdCk7CisgICAgfQorCisgICAgSlNPYmplY3QqIGxhc3RTZWVuQ2FsbGVl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPiht
X2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIH51bmxpbmtlZEJpdCk7CisgICAg
fQorCisgICAgdm9pZCBjbGVhckxhc3RTZWVuQ2FsbGVlKCkKKyAgICB7CisgICAgICAgIG1fY2Fs
bGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gdW5saW5rZWRCaXQ7CisgICAgfQorCisg
ICAgQXJyYXlQcm9maWxlIG1fYXJyYXlQcm9maWxlOworCitwcml2YXRlOgorICAgIHVpbnRwdHJf
dCBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCB7IHVubGlua2VkQml0IH07Cisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fbWFjaGluZUNvZGVUYXJn
ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggMGVmNmE1NWM5YzcxOTYw
M2YxYTJlMzhiNTgwNTY2ZjBhMjQ2N2JlMS4uNTdhYmI5YTRjMDNmMmE5ZmY1MWVjZWRjZGJmMjE0
ZTg0YTk0MDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTY1LDcgKzY1LDggQEAgdm9pZCBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNv
bnN0IEYKIAogdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEp
CiB7Ci0gICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgLy8g
S2VlcCBoaXRDb3VudEZvckxMSW50Q2FjaGluZyB2YWx1ZS4KKyAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CiAgICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
CmluZGV4IDljM2IwNjg0MjcwMzRiMDg5YmEwOThlODIyZmZkMGUxNmVmMzUwOTYuLjhmNjBlYjBm
NDBhYzNiMTZkNmFiMDNkYWRkYzYyMjg4OWNlYjRjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCkBAIC0x
MjksMTcgKzEyOSwxOCBAQCBzdHJ1Y3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUgOiBwdWJsaWMg
TWluaW1hbFZhbHVlUHJvZmlsZSB7CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IExhenlPcGVy
YW5kVmFsdWVQcm9maWxlKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpCi0g
ICAgICAgIDogTWluaW1hbFZhbHVlUHJvZmlsZShrZXkuYnl0ZWNvZGVPZmZzZXQoKSkKLSAgICAg
ICAgLCBtX29wZXJhbmQoa2V5Lm9wZXJhbmQoKSkKKyAgICAgICAgOiBNaW5pbWFsVmFsdWVQcm9m
aWxlKCkKKyAgICAgICAgLCBtX2tleShrZXkpCiAgICAgewogICAgIH0KICAgICAKICAgICBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBrZXkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KG1fYnl0ZWNvZGVPZmZzZXQsIG1fb3BlcmFuZCk7
CisgICAgICAgIHJldHVybiBtX2tleTsKICAgICB9CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBtX2tleTsKICAgICAK
ICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSwgOD4g
TGlzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFi
bGUuaAppbmRleCBhNWQ0MTIxYjFkNDFkMTYxYmYyNjU0MmUwOTI4NmNmYmQ5OTM5NWI4Li45NTRk
MGJhMTZkNzgyMTAzOTdiY2ZmZjk0ODY4OTgzYmEyMDJjNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTg4LDExICs4OCw2IEBAIGNs
YXNzIE1ldGFkYXRhVGFibGUgewogICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAg
IH0KIAotICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCo+KHRoaXMpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBNZXRhZGF0YVRhYmxlKFVubGlua2Vk
TWV0YWRhdGFUYWJsZSYpOwogCkBAIC0xMDEsNiArOTYsMTEgQEAgY2xhc3MgTWV0YWRhdGFUYWJs
ZSB7CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6
TGlua2luZ0RhdGEqPigoYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSAtIHNpemVvZihVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKSkpOwogICAgIH0KIAorICAgIFVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCo+KHRoaXMpOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCogZ2V0SW1wbCh1bnNpZ25lZCBpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBidWZmZXIoKVtp
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgKaW5kZXggYTcwNzUzYTdiOTk2NGRjOGM1YWY2MTgzZjM4MDJlMDU2
NGU1ZGU4Yy4uZjU2NzljOTNlNWNlMGQ0YzViYjE0OGFlMzVjNzI4ZTUzMjMzMzI5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmgKQEAgLTM1LDE3ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
RnVuY3Rpb25SYXJlRGF0YTsKIAotY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewordGVt
cGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFz
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2FsbG9jYXRvcik7IH0KLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX3N0cnVjdHVyZSk7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIG1faW5saW5lQ2FwYWNpdHkpOyB9CisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UsIG1fYWxsb2NhdG9yKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlLCBtX3N0cnVjdHVyZSk7IH0KIAotICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkKLSAgICAgICAgOiBtX2lubGluZUNhcGFjaXR5KDApCi0gICAgewot
ICAgIH0KKyAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UoKSA9IGRlZmF1bHQ7CiAKICAg
ICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQogCkBAIC01OCwzNyArNTUs
NzQgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogICAgICAgICBXVEY6OmxvYWRM
b2FkRmVuY2UoKTsKICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fYWxsb2NhdG9yID0gQWxsb2Nh
dG9yKCk7CisgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChpc051
bGwoKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKKyAgICB7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fc3RydWN0dXJlKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChW
TSYsIEpTT2JqZWN0KiBwcm90b3R5cGUpOworCisgICAgQWxsb2NhdG9yIG1fYWxsb2NhdG9yOyAv
LyBQcmVjb21wdXRlZCB0byBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIGdlbmVyYXRlZCBjb2RlLgor
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworfTsKKworY2xhc3MgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUgOiBwdWJsaWMgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
PE9iamVjdEFsbG9jYXRpb25Qcm9maWxlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT47CisKKyAg
ICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpID0gZGVmYXVsdDsKKworICAgIHVzaW5nIEJhc2U6
OmNsZWFyOworICAgIHVzaW5nIEJhc2U6OnZpc2l0QWdncmVnYXRlOworCisgICAgdm9pZCBzZXRQ
cm90b3R5cGUoVk0mLCBKU0NlbGwqLCBKU09iamVjdCopIHsgfQorfTsKKworY2xhc3MgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlIDogcHVibGljIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU+IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZT47CisKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGUoKSA9IGRlZmF1bHQ7CisKICAgICBKU09iamVjdCogcHJvdG90eXBl
KCkKICAgICB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBtX3Byb3RvdHlwZS5nZXQo
KTsKICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQotICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgeyByZXR1cm4gbV9pbmxp
bmVDYXBhY2l0eTsgfQotCiAKICAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1fYWxs
b2NhdG9yID0gQWxsb2NhdG9yKCk7Ci0gICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgIEJhc2U6OmNsZWFyKCk7CiAgICAgICAgIG1fcHJvdG90eXBlLmNsZWFyKCk7Ci0gICAgICAg
IG1faW5saW5lQ2FwYWNpdHkgPSAwOwogICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOwogICAgIH0K
IAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewot
ICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7CisgICAgICAgIEJhc2U6OnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3Byb3RvdHlwZSk7
CiAgICAgfQogCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQoVk0mLCBKU09iamVjdCogcHJvdG90eXBlKTsKKyAgICB2b2lkIHNldFByb3RvdHlwZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBt
X3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBvYmplY3QpOworICAgIH0KIAotICAgIEFsbG9jYXRv
ciBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZvciBn
ZW5lcmF0ZWQgY29kZS4KLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsK
K3ByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3Byb3RvdHlwZTsKLSAgICB1
bnNpZ25lZCBtX2lubGluZUNhcGFjaXR5OwogfTsKIAorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCmluZGV4IDQ5OTkxMjFiMTY2MDY0M2M4NTk3ZTMy
MGEwYTYyNWRkYzJjNWQ2ODIuLmYxMWM0Y2M0ZjVmNDNhYTZmNzM0Nzg1NDQwYWRmN2EwYmU4MTg5
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKQEAgLTMxLDEyICszMSwxMSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGluZmVy
cmVkSW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBGdW5jdGlvblJhcmVE
YXRhKiBmdW5jdGlvblJhcmVEYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK0FMV0FZ
U19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46OmluaXRp
YWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvd25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBh
Y2l0eSwgSlNGdW5jdGlvbiogY29uc3RydWN0b3IsIEZ1bmN0aW9uUmFyZURhdGEqIGZ1bmN0aW9u
UmFyZURhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CiAgICAgQVNTRVJUKCFtX3N0
cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFtX3Byb3RvdHlwZSk7Ci0gICAgQVNTRVJUKCFtX2lubGlu
ZUNhcGFjaXR5KTsKIAogICAgIC8vIEZJWE1FOiBUZWFjaCBjcmVhdGVfdGhpcydzIGZhc3QgcGF0
aCBob3cgdG8gYWxsb2NhdGUgcG9seQogICAgIC8vIHByb3RvIG9iamVjdHM6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc1MTcKQEAgLTU2LDggKzU1LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmls
ZShWTSYgdm0sIEpTR2xvYmFsT2IKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKICAgICAgICAgICAgIG1f
YWxsb2NhdG9yID0gQWxsb2NhdG9yKCk7CiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5zZXQodm0s
IG93bmVyLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9wcm90b3R5cGUuc2V0KHZtLCBvd25l
ciwgcHJvdG90eXBlKTsKLSAgICAgICAgICAgIG1faW5saW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUt
PmlubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxEZXJpdmVkKj4odGhp
cyktPnNldFByb3RvdHlwZSh2bSwgb3duZXIsIHByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTM4LDExICsxMzYsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lk
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xv
YmFsT2IKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogCiAgICAgbV9zdHJ1Y3R1cmUuc2V0
KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBw
cm90b3R5cGUpOwotICAgIG1faW5saW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKKyAgICBz
dGF0aWNfY2FzdDxEZXJpdmVkKj4odGhpcyktPnNldFByb3RvdHlwZSh2bSwgb3duZXIsIHByb3Rv
dHlwZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoVk0mIHZtLCBKU09iamVjdCogcHJvdG90
eXBlKQordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK0FMV0FZU19JTkxJTkUgdW5zaWduZWQg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9w
ZXJ0eUNvdW50KFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKICAgICBpZiAocHJvdG90
eXBlID09IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+b2JqZWN0UHJvdG90eXBlKCkpCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmlu
ZGV4IDhhYzYwM2UzY2M1ZjdiMTkzNTQ0YmIwY2ZmMDg0OGRkYjIyMDc0Y2UuLjQ0MjdkZDk4YTQw
NzE2ZjllMzhjNDY5ZTcyY2YwYjYwZTljYzU5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKQEAgLTExMSwxMCArMTExLDYgQEAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVk
IG9wY29kZUxlbmd0aHNbXTsKICAgICBtYWNybyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykg
XAogICAgIG1hY3JvKE9wQ29uc3RydWN0VmFyYXJncykgXAogICAgIG1hY3JvKE9wR2V0QnlWYWwp
IFwKLSAgICBtYWNybyhPcENhbGwpIFwKLSAgICBtYWNybyhPcFRhaWxDYWxsKSBcCi0gICAgbWFj
cm8oT3BDYWxsRXZhbCkgXAotICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCiAgICAgbWFjcm8oT3BJ
bkJ5VmFsKSBcCiAgICAgbWFjcm8oT3BQdXRCeVZhbCkgXAogICAgIG1hY3JvKE9wUHV0QnlWYWxE
aXJlY3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aAppbmRleCBmYTBkM2IwN2EzYzQ0NmJkMWEwMDMwZTUxMjQxODRlM2I0NGZhZTk1Li40ODgzYjRi
M2QyMWJiZmM4ZWQ2NmNmYjk0NzU5MGQ3MDk1YWI2MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCkBAIC00NCwxNCArNDQsNiBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRvdGFsTnVtYmVy
T2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRzICsgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tldHM7CiAg
ICAgCiAgICAgVmFsdWVQcm9maWxlQmFzZSgpCi0gICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgt
MSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9m
QnVja2V0czsgKytpKQotICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7Ci0gICAgfQotICAgIAotICAgIFZhbHVlUHJvZmlsZUJhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAg
ICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tl
dHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwpAQCAtODYsOCArNzgsMTAgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAg
IAogICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBudW1iZXJPZlNhbXBsZXMoKSArIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0
aW9uOworICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBpc1NhbXBsZWRCZWZvcmUo
KTsKICAgICB9CisKKyAgICBib29sIGlzU2FtcGxlZEJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZTsgfQogICAgIAogICAgIGJvb2wgaXNMaXZlKCkgY29uc3QK
ICAgICB7CkBAIC0xMDksNyArMTAzLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIHsKLSAgICAgICAgb3V0LnBy
aW50KCJzYW1wbGVzID0gIiwgdG90YWxOdW1iZXJPZlNhbXBsZXMoKSwgIiBwcmVkaWN0aW9uID0g
IiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOworICAgICAgICBvdXQucHJpbnQoInNh
bXBsZWQgYmVmb3JlID0gIiwgaXNTYW1wbGVkQmVmb3JlKCksICIgbGl2ZSBzYW1wbGVzID0gIiwg
bnVtYmVyT2ZTYW1wbGVzKCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3By
ZWRpY3Rpb24pKTsKICAgICAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CkBAIC0xMzMs
NyArMTI3LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKICAgICAgICAgICAgIG1lcmdlU3Bl
Y3VsYXRpb24obV9wcmVkaWN0aW9uLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKQEAgLTE0MiwxNyArMTM1LDEzIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKICAgICB9CiAgICAgCi0gICAgaW50IG1fYnl0
ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZT
YW1wbGVzSW5QcmVkaWN0aW9uIHsgMCB9OwotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJl
ZGljdGlvbiB7IFNwZWNOb25lIH07Ci0gICAgCiAgICAgRW5jb2RlZEpTVmFsdWUgbV9idWNrZXRz
W3RvdGFsTnVtYmVyT2ZCdWNrZXRzXTsKKworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlv
biB7IFNwZWNOb25lIH07CiB9OwogCiBzdHJ1Y3QgTWluaW1hbFZhbHVlUHJvZmlsZSA6IHB1Ymxp
YyBWYWx1ZVByb2ZpbGVCYXNlPDA+IHsKICAgICBNaW5pbWFsVmFsdWVQcm9maWxlKCk6IFZhbHVl
UHJvZmlsZUJhc2U8MD4oKSB7IH0KLSAgICBNaW5pbWFsVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCk6IFZhbHVlUHJvZmlsZUJhc2U8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAog
dGVtcGxhdGU8dW5zaWduZWQgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CkBAIC0xNjMsMjMg
KzE1MiwxMiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyA6IHB1
YmxpYyBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYgogICAgICAgICA6IFZhbHVlUHJvZmls
ZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oKQogICAgIHsKICAgICB9Ci0g
ICAgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyhpbnQgYnl0ZWNvZGVPZmZzZXQp
Ci0gICAgICAgIDogVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWJlck9mQnVja2V0c0FyZ3Vt
ZW50PihieXRlY29kZU9mZnNldCkKLSAgICB7Ci0gICAgfQogfTsKIAogc3RydWN0IFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAg
ICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4o
KSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmls
ZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZz
ZXQoVCogdmFsdWVQcm9maWxlKQotewotICAgIHJldHVybiB2YWx1ZVByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQ7Ci19Ci0KIC8vIFRoaXMgaXMgYSBtaW5pIHZhbHVlIHByb2ZpbGUgdG8gY2F0Y2gg
cGF0aG9sb2dpZXMuIEl0IGlzIGEgY291bnRlciB0aGF0IGdldHMKIC8vIGluY3JlbWVudGVkIHdo
ZW4gd2UgdGFrZSB0aGUgc2xvdyBwYXRoIG9uIGFueSBpbnN0cnVjdGlvbi4KIHN0cnVjdCBSYXJl
Q2FzZVByb2ZpbGUgewpAQCAtMTk4LDggKzE3Niw3IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQ
cm9maWxlQnl0ZWNvZGVPZmZzZXQoUmFyZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2ZpbGUpCiAg
ICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAotc3RydWN0
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgewotICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7Citz
dHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCA6IHB1YmxpYyBWYWx1ZVByb2ZpbGUgewogICAg
IGludCBtX29wZXJhbmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDY1MDVhZDU3OTM0NzAyMTE5YzU4ZmI2Nzg3ZDlhNmNk
ODgzNGQzYzUuLmI2ODY1ZjdhY2FjNzEyMGQ4ZjE2YTViNGE2NDU3MDZiZWQ2YTBjY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00
Nzk1LDcgKzQ3OTUsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXRUaGlzKCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCisg
ICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KGNhY2hlZFN0cnVjdHVyZUlEKTsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5t
X3RvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwogICAgICAgICAgICAgICAgIHx8ICFjYWNoZWRTdHJ1
Y3R1cmUKICAgICAgICAgICAgICAgICB8fCBjYWNoZWRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS50b1RoaXMgIT0gSlNPYmplY3Q6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlz
CkBAIC02MDExLDcgKzYwMTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IGVlNTNkNjFkN2Y3NTQ2NzgxYTkwNDY3NjBmMmE1YTllZjM4YjZl
ZDUuLjI1YzRjMDkwZDYwMDFlNmJjMTFmNDBiNjQ2YjlkZjY3NmI2YzA0MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzU1LDcgKzM1NSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGNvbnN0cnVjdG9yCiAgICAgaWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0g
SlNGdW5jdGlvblR5cGUgJiYganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVz
ZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAgYXV0byByYXJlRGF0YSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9m
aWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKCk7Ci0gICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBhbGxvY2F0aW9u
UHJvZmlsZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgICAgICBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUqIGFsbG9jYXRpb25Qcm9maWxlID0g
cmFyZURhdGEtPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgICAgICBKU09i
amVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZGViZDAzZWIxZWM2ODVk
MDdjMGE3NWIxZThkM2ZhNGE5ZTVjNjc1Mi4uZDA0MTBiMzVkMzkwMTdmODBkYjU5MDVlZDQ5MmQz
ZTMzODY4YmM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTEyNTY1LDE0ICsxMjU2NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlVGhpcyhOb2RlKiBub2RlKQogICAgIHNsb3dQYXRoLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZUdQUikpOwogICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRh
KCkpLCByYXJlRGF0YUdQUik7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7Ci0gICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwotICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpv
ZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOworICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7
CiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBKSVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFs
bG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2hHUFIsIHNsb3dQYXRo
KTsKIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7Ci0gICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRh
OjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOworICAg
IG1faml0LmxvYWQ4KEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0
LmVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRHUFIsIGlubGluZUNhcGFjaXR5R1BS
KTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4
IDg5OTk1ZTY3NDhkM2YyNDJhNWUwMjA1Y2EwY2FlMTY0NTgzOTdlMzAuLjcwYzk5M2E3MThhNzcx
ZjE2MWRjZjJiZTM0MjEyZjA5MThlYjlmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC01Nyw4ICs1Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVu
dHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBc
CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1l
bnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRP
Zk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJl
RGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigp
KSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0
YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZB
bGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAg
ICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVy
KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNl
dE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAppbmRleCBhZmM0YjI5NTNkMzIyNWRlMDg2MTY3Mjc0NzNjYWQ3Y2VjM2RjMjU5
Li5jMDY0Mzg3YmVhNjBjNDkzODczYTFlOTFlNTVkNGQ1NTlmN2FjNzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSklUOjpjb21waWxlU2V0
dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyopCiAgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAg
ICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmls
ZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
aW5kZXggYjQyZTk5N2FhYjYzZGJiMTUyZGFlMjQyZDdiOTRmMGUzNGU5MzY5Ny4uYWY2MDhmMDMx
MGQxOGViMmZiYmUyZGQ2ODRiMmU1Y2VmZDgzYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEpJVDo6Y29tcGlsZVNl
dHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogICAgICAgICBlbWl0
TG9hZChyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKDApLCByZWdUMCwgcmVnVDEpOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENl
bGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBzdG9yZTMyKHJlZ1QxLCBtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICBz
dG9yZTMyKHJlZ1QxLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAxOGNl
YmE2YWQ5MGI4MDhjNGUwNGZmZDE4ZjFjYjkyNjUyMmY0MjYyLi5mMDVkYmE5NjRiMmU2NzdhODkz
YjFkZDFlZmJhZGMyNGMzZTgzYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVncyByZWdzKHJlZ1QwKTsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOwotICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZSY+KHByb2ZpbGUpKTsKICAgICAgICAgfSk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpAQCAtODc4LDE1ICs4NzgsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VG9UaGlzPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJl
ID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRT
dHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCksIHJlZ1QxKTsKIAogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7CiAKICAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdFR5cGUocmVnVDEsIEZpbmFsT2JqZWN0VHlwZSkpOwotICAgIGxvYWRQdHIoY2Fj
aGVkU3RydWN0dXJlLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJv
LCByZWdUMikpOwotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMik7CisgICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdU
Mik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKQEAgLTkwOCw4ICs5MDYs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90RnVuY3Rpb24oY2Fs
bGVlUmVnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFSZWcpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFS
ZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSAr
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9y
UmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zm
c2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJh
cmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3Ry
dWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOwogCiAgICAgbG9hZFB0cihjYWNoZWRGdW5jdGlvbiwg
Y2FjaGVkRnVuY3Rpb25SZWcpOwogICAgIEp1bXAgaGFzU2Vlbk11bHRpcGxlQ2FsbGVlcyA9IGJy
YW5jaFB0cihFcXVhbCwgY2FjaGVkRnVuY3Rpb25SZWcsIFRydXN0ZWRJbW1QdHIoSlNDZWxsOjpz
ZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpKTsKQEAgLTkxOSw5ICs5MTcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0
ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBK
SVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCBidXR0
ZXJmbHksIHNjcmF0Y2hSZWcsIHNsb3dDYXNlcyk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoUmVnLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkMzIo
QWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZJbmxpbmVD
YXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmVSZWcs
IFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIGVt
aXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKaW5kZXggMjVhOWM4ZjM1MGFkYzNlNjk0NDBkYWNhMzRkODI0MjJlZTRmMTgy
Yy4uOTdhZTJmYmU1YjJmMzc1OTU0NDQ4ZGU4NWE4MTExOGRlZDg5ZDAzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtODk5LDcgKzg5OSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQmIHByb2ZpbGUpIHsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MocmVnVDEsIHJl
Z1QwKTsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJh
bmQsIHJlZ3MpOwotICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShwcm9maWxlLm1f
cHJvZmlsZSk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHByb2ZpbGUpOwog
ICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0xMDIwLDgg
KzEwMjAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90RnVuY3Rp
b24oY2FsbGVlUmVnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFSZWcpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyYXJl
RGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxv
Y2F0b3JSZWcpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGxvYWQz
MihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKIAogICAgIGxvYWRQdHIoY2FjaGVkRnVuY3Rp
b24sIGNhY2hlZEZ1bmN0aW9uUmVnKTsKICAgICBKdW1wIGhhc1NlZW5NdWx0aXBsZUNhbGxlZXMg
PSBicmFuY2hQdHIoRXF1YWwsIGNhY2hlZEZ1bmN0aW9uUmVnLCBUcnVzdGVkSW1tUHRyKEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKSk7CkBAIC0xMDMxLDkgKzEwMzEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBhdXRvIGJ1dHRlcmZseSA9
IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0
UmVnLCBKSVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVn
LCBidXR0ZXJmbHksIHNjcmF0Y2hSZWcsIHNsb3dDYXNlcyk7Ci0gICAgZW1pdExvYWRQYXlsb2Fk
KGNhbGxlZSwgc2NyYXRjaFJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hSZWcsIEpT
RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHNjcmF0Y2hSZWcpOwotICAgIGxvYWQzMihB
ZGRyZXNzKHNjcmF0Y2hSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZklubGluZUNh
cGFjaXR5KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBsb2FkOChBZGRyZXNzKHN0cnVjdHVyZVJlZywg
U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CiAgICAgZW1p
dEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgYWRk
U2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBlbWl0U3RvcmVDZWxsKGJ5dGVjb2RlLm1fZHN0Lm9m
ZnNldCgpLCByZXN1bHRSZWcpOwpAQCAtMTA0Myw3ICsxMDQxLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwogICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIFdy
aXRlQmFycmllckJhc2U8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gJm1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZt
ZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgIGludCB0aGlzUmVnaXN0ZXIgPSBieXRl
Y29kZS5tX3NyY0RzdC5vZmZzZXQoKTsKIAogICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVn
VDMsIHJlZ1QyKTsKQEAgLTEwNTEsNyArMTA0OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5
cGUocmVnVDIsIEZpbmFsT2JqZWN0VHlwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIGxvYWRQdHIoY2FjaGVk
U3RydWN0dXJlLCByZWdUMik7CisgICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNWEw
MDNhYWYzMDAzMWZkMzYxZGY0MGI3ZGU3YTI2YjI1NmY4ZWNkOC4uMTJiNzhhYWRmNDU4OWRkNDgz
Y2M4NzkyZDJkNjM4NjM1MTk5MGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0xNjk1LDcgKzE2OTUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZShFeGVjU3RhdGUqIGV4
ZWMsCiAgICAgYXV0byBieXRlY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0
ZWNvZGVJbmRleCktPmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIG1ldGFkYXRhLm1fYnVmZmVyLT5mb3JFYWNoKFsm
XSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewotICAgICAgICBwcm9maWxlLm1f
cHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihw
cm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCku
anNWYWx1ZSgpKTsKICAgICB9KTsKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1MTlhZDdhZWMz
NjRhYmE5MjY2MDE0YzJkM2ViNDYyZDI1OWIzNzEzLi45ZDYyMTQ4MWY3NzQ3NGVmYjgzMWJkNGU1
ZjFmNTgyMjllMzMyNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogICAgIAogICAgIGlmICgq
aWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxp
bmcoKSkgewotICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1
YWwsIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKKyAgICAgICAgSnVt
cCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Mo
Jm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwogICAgICAgICBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QxLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CiAgICAgICAgIG5vdEFycmF5TGVuZ3Ro
TW9kZS5saW5rKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGUyZGExMTVlY2QzY2RmMTNlOWRi
MWQwNzQ1ZGUzN2JlZjhkYzQyODcuLjA0MjdjZjJhYTI4NTIwYzNjOWEyYzNiY2MxNzE1Zjc2MTZj
MTY4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBpZiAoKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsK
LSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNv
bHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJy
YXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tX21vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhf
dD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwogICAgICAgICBlbWl0QXJyYXlQcm9maWxp
bmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QyLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJy
YXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CiAgICAgICAgIG5vdEFycmF5TGVuZ3RoTW9kZS5s
aW5rKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCmluZGV4IDJlOTBjNzAxZGExZWM3NWIxODIyYWE2ZDdiM2JlN2M3NDI2ZjI1
YjcuLjI1NGZjZGNkZGFmZDYyNGMwNzU4MDEwNzZjODA3ZDg3NzdmMWZlN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtNzQwLDE5ICs3
NDAsMjQgQEAgc3RhdGljIHZvaWQgc2V0dXBHZXRCeUlkUHJvdG90eXBlQ2FjaGUoRXhlY1N0YXRl
KiBleGVjLCBWTSYgdm0sIGNvbnN0IEluc3RydWN0aW8KICAgICBDb25jdXJyZW50SlNMb2NrZXIg
bG9ja2VyKGNvZGVCbG9jay0+bV9sb2NrKTsKIAogICAgIGlmIChzbG90LmlzVW5zZXQoKSkgewot
ICAgICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6VW5zZXQ7CisgICAgICAgIG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUgPSBHZXRCeUlkTW9kZTo6VW5zZXQ7CiAgICAgICAg
IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnVuc2V0TW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVy
ZS0+aWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBBU1NFUlQoc2xvdC5pc1ZhbHVl
KCkpOwogCi0gICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1vZGU6OlByb3RvTG9hZDsKKyAg
ICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OlByb3RvTG9hZDsg
Ly8gVGhpcyBtdXN0IGJlIGZpcnN0IHNldC4gSW4gNjRiaXQgYXJjaGl0ZWN0dXJlLCB0aGlzIGZp
ZWxkIGlzIHNoYXJlZCB3aXRoIHByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdC4KICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5p
ZCgpOwogICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zm
c2V0ID0gb2Zmc2V0OwotICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUu
Y2FjaGVkU2xvdCA9IHNsb3Quc2xvdEJhc2UoKTsKICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBw
b2ludGVyIHdpbGwgcmVtYWluIHZhbGlkIGJlY2F1c2UgaXQgd2lsbCBiZSBjbGVhcmVkIGJ5IGVp
dGhlciBhIHdhdGNocG9pbnQgZmlyZSBvcgogICAgIC8vIGR1cmluZyBHQyB3aGVuIHdlIGNsZWFy
IHRoZSBMTEludCBjYWNoZXMuCiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2Fk
TW9kZS5jYWNoZWRTbG90ID0gc2xvdC5zbG90QmFzZSgpOworCisgICAgQVNTRVJUKG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OlByb3RvTG9hZCk7CisgICAgQVNT
RVJUKCFtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyk7Cisg
ICAgQVNTRVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuc3RydWN0dXJl
SUQgPT0gc3RydWN0dXJlLT5pZCgpKTsKKyAgICBBU1NFUlQobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXQgPT0gb2Zmc2V0KTsKKyAgICBBU1NFUlQobWV0
YWRhdGEubV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90ID09IHNsb3Quc2xv
dEJhc2UoKSk7CiB9CiAKIApAQCAtNzc1LDggKzc4MCw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9nZXRfYnlfaWQpCiAgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgewog
ICAgICAgICB7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBvbGRTdHJ1Y3R1cmVJRDsKLSAgICAg
ICAgICAgIGF1dG8gbW9kZSA9IG1ldGFkYXRhLm1fbW9kZTsKLSAgICAgICAgICAgIHN3aXRjaCAo
bW9kZSkgeworICAgICAgICAgICAgc3dpdGNoIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2Rl
KSB7CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRNb2RlOjpEZWZhdWx0OgogICAgICAgICAgICAg
ICAgIG9sZFN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUu
c3RydWN0dXJlSUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC04MDQsMTIgKzgwOCwxMiBA
QCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUodm0pOwogICAgICAgICBpZiAo
c2xvdC5pc1ZhbHVlKCkgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZSkgewogICAgICAg
ICAgICAgLy8gU3RhcnQgb3V0IGJ5IGNsZWFyaW5nIG91dCB0aGUgb2xkIGNhY2hlLgotICAgICAg
ICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgICAgICAg
ICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CiAg
ICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJ
RCA9IDA7CiAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5j
YWNoZWRPZmZzZXQgPSAwOwogCiAgICAgICAgICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUg
Y2FjaGUgZnJvbSBldmVyIGhhcHBlbmluZy4KLSAgICAgICAgICAgIG1ldGFkYXRhLm1faGl0Q291
bnRGb3JMTEludENhY2hpbmcgPSAwOworICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogICAgICAgICAKICAgICAgICAgICAgIGlm
IChzdHJ1Y3R1cmUtPnByb3BlcnR5QWNjZXNzZXNBcmVDYWNoZWFibGUoKQogICAgICAgICAgICAg
ICAgICYmICFzdHJ1Y3R1cmUtPm5lZWRJbXB1cmVQcm9wZXJ0eVdhdGNocG9pbnQoKSkgewpAQCAt
ODIwLDIxICs4MjQsMjIgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZCkKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5z
dHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQoKTsKICAgICAgICAgICAgICAgICBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5jYWNoZWRPZmZzZXQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1ldGFkYXRh
Lm1faGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNV
bnNldCgpKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiAoc2xvdC5pc1ZhbHVlKCkgfHwgc2xv
dC5pc1Vuc2V0KCkpKSkgewogICAgICAgICAgICAgQVNTRVJUKHNsb3Quc2xvdEJhc2UoKSAhPSBi
YXNlVmFsdWUpOwogCi0gICAgICAgICAgICBpZiAoISgtLW1ldGFkYXRhLm1faGl0Q291bnRGb3JM
TEludENhY2hpbmcpKQorICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5tX21vZGVNZXRhZGF0
YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCiAgICAgICAgICAgICAgICAgc2V0dXBHZXRCeUlk
UHJvdG90eXBlQ2FjaGUoZXhlYywgdm0sIHBjLCBtZXRhZGF0YSwgYmFzZUNlbGwsIHNsb3QsIGlk
ZW50KTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoIUxMSU5UX0FMV0FZU19BQ0NFU1NfU0xP
VwogICAgICAgICAmJiBpc0pTQXJyYXkoYmFzZVZhbHVlKQogICAgICAgICAmJiBpZGVudCA9PSB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKLSAgICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoOwotICAgICAgICBuZXcgKCZtZXRhZGF0YS5tX21vZGVNZXRh
ZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKSBBcnJheVByb2ZpbGUoY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChwYykpOworICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNvZGVCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9k
ZSA9IEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aDsKKyAgICAgICAgbmV3ICgmbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSkgQXJyYXlQcm9maWxlOwog
ICAgICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9m
aWxlLm9ic2VydmVTdHJ1Y3R1cmUoYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUodm0pKTsK
IAogICAgICAgICAvLyBQcmV2ZW50IHRoZSBwcm90b3R5cGUgY2FjaGUgZnJvbSBldmVyIGhhcHBl
bmluZy4KLSAgICAgICAgbWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7Cisg
ICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
MDsKICAgICB9CiAKICAgICBMTElOVF9QUk9GSUxFX1ZBTFVFKHJlc3VsdCk7CkBAIC0xNTAyLDEy
ICsxNTA3LDcgQEAgaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW4KICAgICAgICAgICAgICAgICBDb2Rl
QmxvY2sqIGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogCiAgICAgICAgICAg
ICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihjYWxsZXJDb2RlQmxvY2stPm1fbG9jayk7
Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQotICAgICAg
ICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOwotICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mby0+Y2FsbGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBpbnRlcm5hbEZ1bmN0
aW9uKTsKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldCh2
bSwgY2FsbGVyQ29kZUJsb2NrLCBpbnRlcm5hbEZ1bmN0aW9uKTsKLSAgICAgICAgICAgICAgICBj
YWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgICAgICAg
ICBjYWxsTGlua0luZm8tPmxpbmsodm0sIGNhbGxlckNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlv
biwgY29kZVB0cik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGFzc2VydElzVGFnZ2Vk
V2l0aChjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCksIEpTRW50cnlQdHJUYWcpOwpAQCAtMTU1
MCwxMiArMTU1MCw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luCiAgICAgICAgIENvZGVCbG9j
ayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CiAKICAgICAgICAgQ29uY3Vy
cmVudEpTTG9ja2VyIGxvY2tlcihjYWxsZXJDb2RlQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIAot
ICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQotICAgICAgICAgICAgY2FsbExp
bmtJbmZvLT5yZW1vdmUoKTsKLSAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KHZtLCBj
YWxsZXJDb2RlQmxvY2ssIGNhbGxlZSk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5D
YWxsZWUuc2V0KHZtLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlZSk7Ci0gICAgICAgIGNhbGxMaW5r
SW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBjYWxsTGlua0luZm8t
Pmxpbmsodm0sIGNhbGxlckNvZGVCbG9jaywgY2FsbGVlLCBjb2RlUHRyKTsKICAgICAgICAgaWYg
KGNvZGVCbG9jaykKICAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChleGVj
LCBjYWxsTGlua0luZm8pOwogICAgIH0KQEAgLTE5MjgsNyArMTkyMyw3IEBAIExMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX2NhdGNoKQogICAgIGF1dG8gYnl0ZWNvZGUgPSBw
Yy0+YXM8T3BDYXRjaD4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRh
KGV4ZWMpOwogICAgIG1ldGFkYXRhLm1fYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFsdWVQcm9maWxl
QW5kT3BlcmFuZCYgcHJvZmlsZSkgewotICAgICAgICBwcm9maWxlLm1fcHJvZmlsZS5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFu
ZCkuanNWYWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjpl
bmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKICAg
ICB9KTsKIAogICAgIExMSU5UX0VORCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20gYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQppbmRleCBjNzdmYjdlMzZi
Y2RlNTNlYTM0YWRlN2U0ODM5MDZhZWM1YmYzNjMyLi5jMmU2MGFiNmRmYjBiMmQ4ZDg4Njg3NTBj
ZjU4YmU5ZjMzNWExMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMyXzY0LmFzbQpAQCAtNzQ1LDcgKzc0NSw3IEBAIGxs
aW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywgT3BUb1RoaXMsIG1hY3JvIChzaXplLCBnZXQs
IGRpc3BhdGNoLCBtZXRhZGF0YSwKICAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwgRmluYWxPYmplY3RUeXBlLCAub3BU
b1RoaXNTbG93CiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRwIE9wVG9UaGlzOjpNZXRh
ZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIE9wVG9UaGlzOjpNZXRh
ZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0sIHQyCiAgICAgYmluZXEgSlNDZWxsOjptX3N0
cnVjdHVyZUlEW3QwXSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaCgpCiAKQEAgLTEz
NDQsNyArMTM0NCw3IEBAIGVuZCkKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQs
IE9wR2V0QnlJZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4p
CiAgICAgbWV0YWRhdGEodDUsIHQwKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1f
bW9kZVt0NV0sIHQxCisgICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRh
dGEubW9kZVt0NV0sIHQxCiAgICAgZ2V0KG1fYmFzZSwgdDApCiAKIC5vcEdldEJ5SWRQcm90b0xv
YWQ6CkBAIC0xODIzLDcgKzE4MjMsNyBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9wY29k
ZVN0cnVjdCwgZ2V0dSkKICAgICBiaW5lcSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0sIENlbGxUYWcsIC5kb25lCiAgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0
ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDAKICAgICBsb2FkaSBKU0NlbGw6Om1fc3Ry
dWN0dXJlSURbdDBdLCB0MAotICAgIHN0b3JlaSB0MCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRh
OjptX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCisgICAgc3RvcmVpIHQw
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fYXJyYXlQcm9maWxl
Lm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgogZW5kCiAKQEAgLTE4MzYsNyArMTgz
Niw3IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3Ry
dWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEpCiAKICAg
ICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2NhbGxMaW5rSW5mby5jYWxsZWVbdDVdLCB0MgorICAgICAgICBsb2FkcCAlb3Bj
b2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0U2VlbkNh
bGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQoc2l6ZSwgdDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKICAgICAgICAgYmluZXEg
dDMsIHQyLCAub3BDYWxsU2xvdwogICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwgbV9h
cmd2LCB0MykKQEAgLTE4NDksOCArMTg0OSw4IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVO
YW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAg
ICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgICAg
IHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCiAgICAgICAgIG1vdmUgdDMs
IHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxs
TGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRyVGFn
KQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRj
aCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1
Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0NV0sIHQy
LCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihzaXpl
LCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQogCiAgICAg
Lm9wQ2FsbFNsb3c6CiAgICAgICAgIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcGNvZGVTdHJ1Y3Qs
IGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCmluZGV4IGM4MDc0MzU4
NDUwOWNmZWUzMDk5M2E2ZWIxMTI1NWQyMTMzNTFjNjIuLjgxMTlkYTJjYmZmN2FiNDgyMDMyYjcy
YWQzMzdiNTFhYmZiMTljMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyNjQuYXNtCkBAIC03MDEsMTAgKzcwMSwxMCBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsCiAgICAgbG9hZHEgW2NmciwgdDAsIDhdLCB0MAogICAgIGJ0cW56
IHQwLCB0YWdNYXNrLCAub3BUb1RoaXNTbG93CiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVbdDBd
LCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKLSAgICBsb2FkU3RydWN0dXJlV2l0aFNj
cmF0Y2godDAsIHQxLCB0MiwgdDMpCisgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVjdHVyZUlEW3Qw
XSwgdDEKICAgICBtZXRhZGF0YSh0MiwgdDMpCi0gICAgbG9hZHAgT3BUb1RoaXM6Ok1ldGFkYXRh
OjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIHQyCi0gICAgYnBuZXEgdDEsIHQyLCAub3BUb1RoaXNT
bG93CisgICAgbG9hZGkgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZUlEW3Qy
XSwgdDIKKyAgICBiaW5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKICAgICBkaXNwYXRjaCgpCiAK
IC5vcFRvVGhpc1Nsb3c6CkBAIC0xMjg4LDcgKzEyODgsNyBAQCBlbmQpCiAKIGxsaW50T3BXaXRo
TWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBPcEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3Bh
dGNoLCBtZXRhZGF0YSwgcmV0dXJuKQogICAgIG1ldGFkYXRhKHQyLCB0MSkKLSAgICBsb2FkYiBP
cEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21vZGVbdDJdLCB0MQorICAgIGxvYWRiIE9wR2V0QnlJZDo6
TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRhLm1vZGVbdDJdLCB0MQogICAgIGdldChtX2Jhc2UsIHQw
KQogICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVDZWxsKHNpemUsIHQwLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCiAKQEAgLTE5MTgsNyArMTkxOCw3IEBAIG1hY3JvIGFycmF5UHJvZmlsZUZvckNhbGwo
b3Bjb2RlU3RydWN0LCBnZXR1KQogICAgIGxvYWRxIFRoaXNBcmd1bWVudE9mZnNldFtjZnIsIHQz
LCA4XSwgdDAKICAgICBidHFueiB0MCwgdGFnTWFzaywgLmRvbmUKICAgICBsb2FkaSBKU0NlbGw6
Om1fc3RydWN0dXJlSURbdDBdLCB0MwotICAgIHN0b3JlaSB0MywgJW9wY29kZVN0cnVjdCU6Ok1l
dGFkYXRhOjptX2FycmF5UHJvZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCisgICAgc3Rv
cmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fYXJyYXlQ
cm9maWxlLm1fbGFzdFNlZW5TdHJ1Y3R1cmVJRFt0NV0KIC5kb25lOgogZW5kCiAKQEAgLTE5MzEs
NyArMTkzMSw3IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNvZGVOYW1lLCBzbG93UGF0aCwgb3Bj
b2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAgICAgICAgIGVuZCwgbWV0YWRhdGEp
CiAKICAgICAgICAgZ2V0KG1fY2FsbGVlLCB0MCkKLSAgICAgICAgbG9hZHAgJW9wY29kZVN0cnVj
dCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5jYWxsZWVbdDVdLCB0MgorICAgICAgICBsb2Fk
cCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fY2FsbGVlT3JMYXN0
U2VlbkNhbGxlZVdpdGhMaW5rQml0W3Q1XSwgdDIKICAgICAgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZShzaXplLCB0MCwgdDMpCiAgICAgICAgIGJxbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKICAg
ICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJndiwgdDMpCkBAIC0xOTQzLDggKzE5
NDMsOCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0
cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQogICAgICAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQg
KyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBzcAotICAgICAgICBwcmVwYXJl
Q2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2Rl
VGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKLSAgICAgICAgY2FsbFRhcmdl
dEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNvZGVTdHJ1Y3QlOjpN
ZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRy
VGFnKQorICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2Fs
bExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5UHRy
VGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNw
YXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX21hY2hpbmVD
b2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5vcENhbGxTbG93OgogICAgICAg
ICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgc2xvd1BhdGgs
IHByZXBhcmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5jcHAKaW5kZXggODU0NDE4ODgzNmZlNjg5Y2Q4YTY3ZDJiZmY0MzcyNTIxNzNj
ZjViZS4uNGU3OGE0OGQ2ZDE5ZWI5YjA2ZDNjOWVkMDc0ZTk1ODExMmQwOGE3YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCkBAIC0y
NDIsNyArMjQyLDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV90aGlzKQogICAg
ICAgICAgICAgY2FjaGVkQ2FsbGVlLnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoSlNDZWxsOjpzZWVu
TXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpOwogCiAgICAgICAgIHNpemVfdCBpbmxpbmVDYXBhY2l0
eSA9IGJ5dGVjb2RlLm1faW5saW5lQ2FwYWNpdHk7Ci0gICAgICAgIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKiBhbGxvY2F0aW9uUHJvZmlsZSA9IGNvbnN0cnVjdG9yLT5lbnN1cmVSYXJlRGF0YUFu
ZEFsbG9jYXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+b2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKTsKKyAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBl
KiBhbGxvY2F0aW9uUHJvZmlsZSA9IGNvbnN0cnVjdG9yLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9j
YXRpb25Qcm9maWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KS0+b2JqZWN0QWxsb2NhdGlvblByb2Zp
bGUoKTsKICAgICAgICAgdGhyb3dTY29wZS5yZWxlYXNlQXNzZXJ0Tm9FeGNlcHRpb24oKTsKICAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBhbGxvY2F0aW9uUHJvZmlsZS0+c3RydWN0dXJl
KCk7CiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVy
ZSk7CkBAIC0yNzIsMTYgKzI3MiwxNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fdGhp
cykKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1ldGFkYXRhKGV4ZWMpOwogICAgIEpT
VmFsdWUgdjEgPSBHRVQoYnl0ZWNvZGUubV9zcmNEc3QpLmpzVmFsdWUoKTsKICAgICBpZiAodjEu
aXNDZWxsKCkpIHsKLSAgICAgICAgU3RydWN0dXJlKiBteVN0cnVjdHVyZSA9IHYxLmFzQ2VsbCgp
LT5zdHJ1Y3R1cmUodm0pOwotICAgICAgICBTdHJ1Y3R1cmUqIG90aGVyU3RydWN0dXJlID0gbWV0
YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCk7Ci0gICAgICAgIGlmIChteVN0cnVjdHVyZSAh
PSBvdGhlclN0cnVjdHVyZSkgewotICAgICAgICAgICAgaWYgKG90aGVyU3RydWN0dXJlKQorICAg
ICAgICBTdHJ1Y3R1cmVJRCBteVN0cnVjdHVyZUlEID0gdjEuYXNDZWxsKCktPnN0cnVjdHVyZUlE
KCk7CisgICAgICAgIFN0cnVjdHVyZUlEIG90aGVyU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5tX2Nh
Y2hlZFN0cnVjdHVyZUlEOworICAgICAgICBpZiAobXlTdHJ1Y3R1cmVJRCAhPSBvdGhlclN0cnVj
dHVyZUlEKSB7CisgICAgICAgICAgICBpZiAob3RoZXJTdHJ1Y3R1cmVJRCkKICAgICAgICAgICAg
ICAgICBtZXRhZGF0YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAg
ICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5zZXQodm0sIGV4ZWMtPmNvZGVCbG9jaygp
LCBteVN0cnVjdHVyZSk7CisgICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlE
ID0gbXlTdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIHZtLmhlYXAud3JpdGVCYXJyaWVyKGV4ZWMt
PmNvZGVCbG9jaygpLCB2bS5nZXRTdHJ1Y3R1cmUobXlTdHJ1Y3R1cmVJRCkpOwogICAgICAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXND
b25mbGljdGVkOwotICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigpOwor
ICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEID0gMDsKICAgICB9CiAgICAgLy8g
Tm90ZTogV2Ugb25seSBuZWVkIHRvIGRvIHRoaXMgdmFsdWUgcHJvZmlsaW5nIGhlcmUgb24gdGhl
IHNsb3cgcGF0aC4gVGhlIGZhc3QgcGF0aAogICAgIC8vIGp1c3QgcmV0dXJucyB0aGUgaW5wdXQg
dG8gdG9fdGhpcyBpZiB0aGUgc3RydWN0dXJlIGNoZWNrIHN1Y2NlZWRzLiBJZiB0aGUgc3RydWN0
dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRh
LmgKaW5kZXggYTZhNmRmMDBkNDU0Nzg5ODAxOTA0ZmY1ZWVjZWEyMmJkZGM3OTIxYy4uMmVkYTMy
YmEzODUzNjEwZDAxYTk0NWE2YTQ5ZjVmYTQwNGMzYjM0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaApAQCAtNjYsNyArNjYsNyBAQCBj
bGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoRnVuY3Rpb25SYXJlRGF0YSwgbV9vYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSk7CiAgICAgfQogCi0gICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIG9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5
cGUqIG9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiAmbV9v
YmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICB9CkBAIC0xNDUsNyArMTQ1LDcgQEAgY2xhc3Mg
RnVuY3Rpb25SYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgIC8vCiAgICAgLy8g
V2UgZG9uJ3QgcmVhbGx5IGNhcmUgYWJvdXQgMSkgc2luY2UgdGhpcyBtZW1vcnkgaXMgcmFyZSBh
bmQgc21hbGwgaW4gdG90YWwuIDIpIGlzIHVuZm9ydHVuYXRlIGJ1dCBpcwogICAgIC8vIHByb2Jh
Ymx5IG91dHdlaWdoZWQgYnkgdGhlIGNvc3Qgb2YgMykuCi0gICAgT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGUgbV9vYmplY3RBbGxvY2F0aW9uUHJvZmlsZTsKICAgICBJbmxpbmVX
YXRjaHBvaW50U2V0IG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50OwogICAgIElu
dGVybmFsRnVuY3Rpb25BbGxvY2F0aW9uUHJvZmlsZSBtX2ludGVybmFsRnVuY3Rpb25BbGxvY2F0
aW9uUHJvZmlsZTsKICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2JvdW5kRnVuY3Rpb25T
dHJ1Y3R1cmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZl
cmlmaWVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3Bw
CmluZGV4IGQ3NzNkODU1ZmZjMmUwMTU0OGVjZjZkYWE4Y2Q4ZDU1NTkxYzhjOTYuLjA1ZTQwOTli
MTY0YzZhOGExZDcxMzc0Y2ZkYzQ1YjYyZDgzODYwZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwCkBAIC0zMzAsNyArMzMwLDcgQEAgYm9vbCBIZWFw
VmVyaWZpZXI6OnZhbGlkYXRlSlNDZWxsKFZNKiBleHBlY3RlZFZNLCBKU0NlbGwqIGNlbGwsIENl
bGxQcm9maWxlKiBwcm8KICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBqc0R5bmFtaWND
YXN0PENvZGVCbG9jayo+KHZtLCBjZWxsKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGNvZGVCbG9j
aykpIHsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7Ci0gICAgICAgICAgICBjb2Rl
QmxvY2stPmZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVlUHJvZmlsZSYgdmFsdWVQcm9maWxl
KSB7CisgICAgICAgICAgICBjb2RlQmxvY2stPmZvckVhY2hWYWx1ZVByb2ZpbGUoWyZdKFZhbHVl
UHJvZmlsZSYgdmFsdWVQcm9maWxlLCBib29sKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IFZhbHVlUHJvZmlsZTo6dG90YWxOdW1iZXJPZkJ1Y2tldHM7ICsraSkg
ewogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKHZh
bHVlUHJvZmlsZS5tX2J1Y2tldHNbaV0pOwogICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVl
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370147</attachid>
            <date>2019-05-17 13:54:40 -0700</date>
            <delta_ts>2019-05-17 14:09:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517135439.patch</filename>
            <type>text/plain</type>
            <size>79686</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5mZTVlZDdlOGUwZWE5NmQ2
YzllZGNlNGVkY2RmZmEzZTVkOTFlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gc2hyaW5rIE1ldGFkYXRhLiBUaGlzIHBhdGNoIGZpcnN0IGZvY3VzIG9uIGxvdyBoYW5naW5n
IGZydWl0czogaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhbmdlIHJlbW92aW5nIE9TUiBleGl0
IEpTVmFsdWUgaW4gVmFsdWVQcm9maWxlLgorICAgICAgICBUaGlzIHBhdGNoIHVzZXMgZmFuY3kg
Yml0IGp1Z2dsaW5nICYgbGV2ZXJhZ2VzIG5pY2UgZGF0YSB0eXBlcyB0byByZWR1Y2UgTWV0YWRh
dGEsIGFzIGZvbGxvd3MuCisKKyAgICAgICAgMS4gVmFsdWVQcm9maWxlIGlzIHJlZHVjZWQgZnJv
bSAzMiB0byAyNC4gSXQgcmVkdWNlcyBNZXRhZGF0YSB1c2luZyBWYWx1ZVByb2ZpbGUuCisgICAg
ICAgIDIuIEFycmF5UHJvZmlsZSBpcyByZWR1Y2VkIGZyb20gMTYgdG8gMTIuIERpdHRvLgorICAg
ICAgICAzLiBPcENhbGw6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA4OCB0byA2NC4KKyAgICAg
ICAgNC4gT3BHZXRCeUlkOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNTYgdG8gNDAuCisgICAg
ICAgIDUuIE9wVG9UaGlzOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNDggdG8gMzIuCisgICAg
ICAgIDYuIE9wTmV3T2JqZWN0OjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gMzIgdG8gMTYuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBnYXRoZXJlZCBkYXRhLCBpdCBzaG91bGQgcmVkdWNl
IDEtMk1CIGluIHN0ZWFkeSBzdGF0ZSBpbiBHbWFpbCwgbXVjaCBtb3JlIGluIHBlYWsgbWVtb3J5
LCB+MSBNQiBpbiB0aGUgc3RhdGUganVzdCBhZnRlciBmdWxsIEdDLgorICAgICAgICBJdCBhbHNv
IGltcHJvdmVzIFJBTWlmaWNhdGlvbiBieSAwLjMlICg2IHJ1bnMpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICBXZSB1c2UgUHJv
dG9Mb2FkJ3MgSlNPYmplY3QncyBoaWdoIGJpdHMgdG8gZW1iZWQgaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgYW5kIG1vZGUsIHNpbmNlIHRoZXkKKyAgICAgICAgYXJlIGFsd2F5cyB6ZXJvIGZvciBQ
cm90b0xvYWQgbW9kZS4KKworICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxM
aW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgSW4gTExJbnRDYWxsTGlua0luZm8sIHdlIGFsd2F5cyBzZXQg
dGhlIHNhbWUgdmFsdWUgdG8gbGFzdFNlZW5DYWxsZWUgYW5kIGNhbGxlZS4gQnV0IGxhdGVyLCBj
YWxsZWUgY2FuIGJlIGNsZWFyZWQuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgd2UgY2FuIHJlcHJl
c2VudCB0aGVtIGluIG9uZSB2YWx1ZSArIGNsZWFyZWQgZmxhZy4gV2UgZW5jb2RlIHRoaXMgZmxh
ZyBpbnRvIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBjYWxsZWUgY2VsbCBzbworICAgICAgICB0aGF0
IHdlIGNhbiBtYWtlIHRoZW0gb25lIHBvaW50ZXIuIFdlIGFsc28gdXNlIFBhY2tlZFJhd1NlbnRp
bmVsTm9kZSB0byBnZXQgc29tZSBzcGFjZSwgYW5kIGVtYmVkIEFycmF5UHJvZmlsZSBpbnRvIHRo
aXMgc3BhY2UKKyAgICAgICAgdG8gZ2V0IGZ1cnRoZXIgbWVtb3J5IHJlZHVjdGlvbi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpidWZmZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6b2Zmc2V0T2ZBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpjbGVhcik6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpwcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2Fw
YWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5saW5lQ2FwYWNpdHkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46Omlu
aXRpYWxpemVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICBPcE5ld09iamVjdCdzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBwcm90b3R5cGUuIFNvIHdlIGhhdmUg
dHdvIHZlcnNpb25zIG5vdywgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgYW5kIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZQorICAgICAgICB0byBjdXQgb25lIHBvaW50ZXIuIFdl
IGFsc28gcmVtb3ZlIGlubGluZSBjYXBhY2l0eSBzaW5jZSB0aGlzIGNhbiBiZSByZXRyaWV2ZWQg
ZnJvbSBTdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRv
dGFsTnVtYmVyT2ZTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6aXNTYW1wbGVkQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVBy
b2ZpbGVCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBp
cyBubyBsb25nZXIgdXNlZC4gQW5kIHNhbXBsZSBjb3VudCBpcyBub3QgdXNlZCBlZmZlY3RpdmVs
eS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiB0
b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlk
YXRlSlNDZWxsKToKKwogMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2lu
dGVycyBpbiBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCmluZGV4IGMwMGFlZjIxYjZlYmI2MTllOTFjNzQ2YWY0ZmIwOWM1ODRmZDY2
YmIuLjNlMTUwYTAxMjM5NmIxMjgyNDUyOGE1ZTlmMmI5ODM3ZThjN2RlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0zMywxMCAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLWNvbnN0
IGNoYXIqIGNvbnN0IEFycmF5UHJvZmlsZTo6c190eXBlTmFtZSA9ICJBcnJheVByb2ZpbGUiOwot
I2VuZGlmCi0KIC8vIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBvcmRlciBvZiBUeXBlZEFycmF5VHlw
ZS4KIGNvbnN0IEFycmF5TW9kZXMgdHlwZWRBcnJheU1vZGVzW051bWJlck9mVHlwZWRBcnJheVR5
cGVzRXhjbHVkaW5nRGF0YVZpZXddID0gewogICAgIEludDhBcnJheU1vZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0
MmE1NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4
YzBlOGRlMjM3YjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFy
cmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAg
IEFycmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFy
cmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjM4LDE2ICsy
MjksMTEgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKICAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSA9PSBzX3R5cGVOYW1lOyB9Ci0jZW5kaWYKLQogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsg
Ly8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVj
aWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBp
dCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2lj
YWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdl
KSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1w
bGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwpAQCAtMjU1LDEzICsyNDEs
NyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OwotCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVOYW1lOwotICAg
IGNvbnN0IGNoYXIqIG1fdHlwZU5hbWUgeyBzX3R5cGVOYW1lIH07Ci0jZW5kaWYKIH07Ci0KLXR5
cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgND4gQXJyYXlQcm9maWxlVmVjdG9y
Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMDY5NWEyNTA3YjYyMzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uY2Rl
ZTU2OWM4ZDAyMGIwZDc5M2NlODRhZTg4YWM1ZGJlMWI1MTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAK
ICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
KyAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNT
dGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KQEAgLTQxNCw4ICs0MTQsNiBAQAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAg
aGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CkBAIC03MDYsNyArNzA0LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBA
IC03MTksNyArNzE2LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxM
aW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03MzIs
NyArNzI4LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03ODcsNyArNzgy
LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uYmFlNTg5MTE5NDA3MTY0MmNkMzRjY2MyZTYxMDExZDNlYTM1OGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRh
ZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2Fs
bExpbmtJbmZvKFsmXShMTEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAg
IGlmIChjYWxsTGlua0luZm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlu
a0luZm8uY2FsbGVlLmdldCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2Vk
KCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnVubGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5r
SW5mby5sYXN0U2VlbkNhbGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFz
dFNlZW5DYWxsZWUuZ2V0KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2Fs
bGVlLmNsZWFyKCk7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAm
JiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAg
ICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQog
CkBAIC0yNTc1LDE3ICsyNTY4LDI0IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJh
eVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0CiB7CiAgICAg
YXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAg
ICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwK
KyNkZWZpbmUgQ0FTRTEoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAogICAgICAgICBy
ZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmls
ZTsKIAotICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ0FTRSkKLSN1bmRl
ZiBDQVNFCisjZGVmaW5lIENBU0UyKE9wKSBcCisgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKKyAg
ICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9jYWxs
TGlua0luZm8ubV9hcnJheVByb2ZpbGU7CisKKyAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJB
WV9QUk9GSUxFKENBU0UxKQorICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElO
S19JTkZPKENBU0UyKQorCisjdW5kZWYgQ0FTRTEKKyN1bmRlZiBDQVNFMgogCiAgICAgY2FzZSBP
cEdldEJ5SWQ6Om9wY29kZUlEOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkPigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKHRoaXMpOwotICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2Rl
OjpBcnJheUxlbmd0aCkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0yNjMzLDE2ICsyNjMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRh
dGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5v
bkFyCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgogCi0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShb
Jl0oVmFsdWVQcm9maWxlJiBwcm9maWxlKSB7CisgICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0o
VmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKICAgICAgICAgdW5zaWdu
ZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUudG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKICAgICAg
ICAgaWYgKG51bVNhbXBsZXMgPiBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cykKICAgICAg
ICAgICAgIG51bVNhbXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2Ug
ZG9uJ3Qgd2FudCBwcm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1v
cmUgd2VpZ2h0LgogICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBs
ZXM7Ci0gICAgICAgIGlmIChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7CiAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChwcm9maWxlLm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUubV9wcmVkaWN0aW9uICE9
IFNwZWNOb25lKQorICAgICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9m
aWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlcik7CiAgICAgfSk7CkBAIC0yNjUwLDcgKzI2NTEsNyBAQCB2b2lkIENvZGVCbG9j
azo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJP
ZkxpdmVOb25BcgogICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9m
aWxlcykgewogICAgICAgICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlLm1fcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yODAwLDEyICsyODAxLDExIEBAIHZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVl
UHJvZmlsZXMoKQogewogICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6
XG4iKTsKLSAgICBmb3JFYWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkg
ewotICAgICAgICBpZiAocHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewotICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBk
YXRhTG9nRigiICAgYXJnID0gJXU6ICIsIGkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGRhdGFMb2dGKCIgICBiYyA9ICVkOiAiLCBwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQpOworICAg
IGZvckVhY2hWYWx1ZVByb2ZpbGUoW10oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJn
dW1lbnQpIHsKKyAgICAgICAgaWYgKGlzQXJndW1lbnQpCisgICAgICAgICAgICBkYXRhTG9nRigi
ICAgYXJnOiAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjOiAi
KTsKICAgICAgICAgaWYgKCFwcm9maWxlLm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUubV9w
cmVkaWN0aW9uID09IFNwZWNOb25lKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiPGVtcHR5Plxu
Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBhOTNjMzZmYjkxOGYzYjMwY2FiMGM3OThlNjFlNzBjYTU5MWIx
OGNmLi5mNWRiZmVjNjk0YmQxNDcyYjk5YWM1ZjBlYjMxZDBkMGFkMGNmZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00NzgsNyArNDc4LDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBBU1NFUlQo
dm0oKS0+Y2FuVXNlSklUKCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlv
dXMgSklUIGNvbXBpbGVycyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcyBiZWZvcmUgY2FsbGluZyB0aGlzLgogICAgICAgICBWYWx1ZVByb2Zp
bGUmIHJlc3VsdCA9IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAg
ICAgICBBU1NFUlQocmVzdWx0Lm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtOTc0LDcgKzk3Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIFZNKiBtX3ZtOwogCiAgICAgY29uc3Qgdm9pZCogbV9pbnN0
cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxM
TEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
PiBtX2luY29taW5nTExJbnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxs
TGlua0luZm8sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5j
b21pbmdMTEludENhbGxzOwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5
SWRXYXRjaHBvaW50TWFwOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5B
QkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCmluZGV4IGYwMGIzOTc4NzMyZTRmNjdkZDJlNTU2MTA0NzdmZGMyZjdhNWNhY2Iu
LjIyZTc2YjE4NWViOWViYTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzUsMTEg
KzM1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9y
RWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCi0gICAg
ICAgIGZ1bmModmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkpOworICAgICAgICBmdW5jKHZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGkpLCB0cnVlKTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAj
ZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0
YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhf
VkFMVUVfUFJPRklMRShWSVNJVCkKIApAQCAtNTMsMTYgKzUzLDIxIEBAIHZvaWQgQ29kZUJsb2Nr
Ojpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgPT0gR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSk7CiAgICAgICAgIH0pOwogCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyNkZWZpbmUgVklTSVQx
KF9fb3ApIFwKICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCi0gICAgICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQpCisjZGVmaW5lIFZJU0lUMihfX29w
KSBcCisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKIAotI3Vu
ZGVmIFZJU0lUCisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklT
SVQxKQorICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhW
SVNJVDIpCisKKyN1bmRlZiBWSVNJVDEKKyN1bmRlZiBWSVNJVDIKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBk
YzQzNGU2YzRiN2ZkNGVkODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi44NTI0OWI1NTY2MDg3ZGFm
MmE1N2VlZWMwYzg2Mjc3MjZmOGI4Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsODcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0gICAgRGVmYXVs
dCA9IDAsCi0gICAgVW5zZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAgUHJvdG9Mb2Fk
ID0gMCwgLy8gVGhpcyBtdXN0IGJlIHplcm8gdG8gcmV1c2UgdGhlIGhpZ2hlciBiaXRzIG9mIHRo
ZSBwb2ludGVyIGFzIHRoaXMgUHJvdG9Mb2FkIG1vZGUuCisgICAgRGVmYXVsdCA9IDEsCisgICAg
VW5zZXQgPSAyLAogICAgIEFycmF5TGVuZ3RoID0gMywKIH07CiAKK3N0cnVjdCBHZXRCeUlkTW9k
ZU1ldGFkYXRhRGVmYXVsdCB7CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OworICAgIHVuc2lnbmVkIHBhZGRpbmcxOworfTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0KSA9PSAxMik7CisK
K3N0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgeworICAgIFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEOworICAgIHVuc2lnbmVkIHBhZGRpbmcxOworICAgIHVuc2lnbmVkIHBhZGRpbmcyOwor
fTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIp
OworCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIHsKKyAgICBBcnJheVBy
b2ZpbGUgYXJyYXlQcm9maWxlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2Rl
TWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIpOworCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0
YVByb3RvTG9hZCB7CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0OworICAgIEpTT2JqZWN0KiBjYWNoZWRTbG90OworfTsKKyNpZiBD
UFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdldEJ5SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQpID09IDE2KTsKKyNlbmRpZgorCisvLyBJbiA2
NGJpdCBMaXR0bGUgZW5kaWFuIGFyY2hpdGVjdHVyZSwgdGhpcyB1bmlvbiBzaGFyZXMgUHJvdG9M
b2FkJ3MgSlNPYmplY3QqIGNhY2hlZFNsb3Qgd2l0aCAiaGl0Q291bnRGb3JMTEludENhY2hpbmci
IGFuZCAibW9kZSIuCisvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgdGhlc2UgdmFsdWVzIG11
c3QgYmUgemVybyBpZiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCisjaWYgQ1BVKExJVFRMRV9FTkRJ
QU4pICYmIENQVShBRERSRVNTNjQpCiB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhKCkKLSAgICB7IH0KLQotICAgIHN0cnVjdCBEZWZhdWx0IHsKLSAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldDsKLSAgICB9IGRlZmF1bHRNb2RlOwotCi0gICAgc3RydWN0IFVuc2V0IHsKLSAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgfSB1bnNldE1vZGU7Ci0KLSAgICBz
dHJ1Y3QgUHJvdG9Mb2FkIHsKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICAgICAgSlNPYmplY3QqIGNhY2hl
ZFNsb3Q7Ci0gICAgfSBwcm90b0xvYWRNb2RlOwotCi0gICAgc3RydWN0IEFycmF5TGVuZ3RoIHsK
LSAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKLSAgICB9IGFycmF5TGVuZ3RoTW9k
ZTsKKyAgICB7CisgICAgICAgIGRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAg
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKKyAgICAgICAgZGVmYXVsdE1vZGUucGFkZGlu
ZzEgPSAwOworICAgICAgICBtb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgICAgIGhp
dENvdW50Rm9yTExJbnRDYWNoaW5nID0gT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTElu
dENhY2hpbmcoKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBwYWRk
aW5nMTsKKyAgICAgICAgdWludDMyX3QgcGFkZGluZzI7CisgICAgICAgIHVpbnQzMl90IHBhZGRp
bmczOworICAgICAgICB1aW50MTZfdCBwYWRkaW5nNDsKKyAgICAgICAgR2V0QnlJZE1vZGUgbW9k
ZTsKKyAgICAgICAgdWludDhfdCBoaXRDb3VudEZvckxMSW50Q2FjaGluZzsgLy8gVGhpcyBtdXN0
IGJlIHplcm8gd2hlbiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCisgICAgfTsKKyAgICBHZXRCeUlk
TW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKKyAgICBHZXRCeUlkTW9kZU1ldGFkYXRh
VW5zZXQgdW5zZXRNb2RlOworICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJh
eUxlbmd0aE1vZGU7CisgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCBwcm90b0xvYWRN
b2RlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGEpID09IDE2
KTsKKyNlbHNlCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YSB7CisgICAgR2V0QnlJZE1vZGVN
ZXRhZGF0YSgpCisgICAgeworICAgICAgICBkZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CisgICAgICAgIGRlZmF1bHRNb2Rl
LnBhZGRpbmcxID0gMDsKKyAgICAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OworICAg
ICAgICBoaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IE9wdGlvbnM6OnByb3RvdHlwZUhpdENvdW50
Rm9yTExJbnRDYWNoaW5nKCk7CisgICAgfQorCisgICAgdW5pb24geworICAgICAgICBHZXRCeUlk
TW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRh
ZGF0YVVuc2V0IHVuc2V0TW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVu
Z3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9h
ZCBwcm90b0xvYWRNb2RlOworICAgIH07CisgICAgR2V0QnlJZE1vZGUgbW9kZTsKKyAgICB1aW50
OF90IGhpdENvdW50Rm9yTExJbnRDYWNoaW5nOwogfTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAppbmRleCA2ZTRlOGJmZGJlMTc1YzA2YmY5ODJlODM0MGVjNjQyYzM5YzIwMTg2Li5kYjlh
ZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkCiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9w
cm90b19sb2FkLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MDM5Ci0gICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgIT0gR2V0QnlJZE1vZGU6
OkRlZmF1bHQpCisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgZmFsc2UpOwogICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKaW5k
ZXggODRiNWMxMWM1ODY2NWQzMmJiZDVjMjIwZDlhOTE4MzgyODRhMWUxNi4uN2MyN2NkZjY2ZTdh
OWJkZGFhMmY2YWJlYTI2MjhmY2I0NjkzOWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKQEAgLTM0LDEwICszNCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEluc3RydWN0aW9uOwogCi1zdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
IHsKLSAgICBMTEludENhbGxMaW5rSW5mbygpCi0gICAgewotICAgIH0KK2NsYXNzIExMSW50Q2Fs
bExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5m
bz4geworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCB1bmxpbmtlZEJpdCA9IDB4MTsKKworICAg
IExMSW50Q2FsbExpbmtJbmZvKCkgPSBkZWZhdWx0OwogICAgIAogICAgIH5MTEludENhbGxMaW5r
SW5mbygpCiAgICAgewpAQCAtNDUsMTkgKzQ4LDQ5IEBAIHN0cnVjdCBMTEludENhbGxMaW5rSW5m
byA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gewogICAg
ICAgICAgICAgcmVtb3ZlKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJl
dHVybiAhIWNhbGxlZTsgfQorICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiAhKG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ICYgdW5saW5rZWRCaXQpOyB9CiAgICAg
CisKKyAgICB2b2lkIGxpbmsoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKKyAgICB7Cisg
ICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgIG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oY2FsbGVlKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIsIGNhbGxlZSk7
CisgICAgICAgIG1fbWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgIH0KKwogICAgIHZv
aWQgdW5saW5rKCkKICAgICB7Ci0gICAgICAgIGNhbGxlZS5jbGVhcigpOwotICAgICAgICBtYWNo
aW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPigpOwor
ICAgICAgICAvLyBNYWtlIGxpbmsgaW52YWxpZGF0ZWQuIEl0IHdvcmtzIGJlY2F1c2UgTExJbnQg
dGVzdHMgdGhlIGdpdmVuIGNhbGxlZSB3aXRoIHRoaXMgcG9pbnRlci4gQnV0IGl0IGlzIHN0aWxs
IHZhbGlkIGFzIGxhc3RTZWVuQ2FsbGVlIQorICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxs
ZWVXaXRoTGlua0JpdCB8PSB1bmxpbmtlZEJpdDsKKyAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdl
dCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPigpOwogICAgICAgICBpZiAo
aXNPbkxpc3QoKSkKICAgICAgICAgICAgIHJlbW92ZSgpOwogICAgIH0KLSAgICAKLSAgICBXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+IGNhbGxlZTsKLSAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGxh
c3RTZWVuQ2FsbGVlOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBt
YWNoaW5lQ29kZVRhcmdldDsKKworICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFpc0xpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yTGFzdFNlZW5D
YWxsZWVXaXRoTGlua0JpdCk7CisgICAgfQorCisgICAgSlNPYmplY3QqIGxhc3RTZWVuQ2FsbGVl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPiht
X2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIH51bmxpbmtlZEJpdCk7CisgICAg
fQorCisgICAgdm9pZCBjbGVhckxhc3RTZWVuQ2FsbGVlKCkKKyAgICB7CisgICAgICAgIG1fY2Fs
bGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gdW5saW5rZWRCaXQ7CisgICAgfQorCisg
ICAgQXJyYXlQcm9maWxlIG1fYXJyYXlQcm9maWxlOworCitwcml2YXRlOgorICAgIHVpbnRwdHJf
dCBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCB7IHVubGlua2VkQml0IH07Cisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fbWFjaGluZUNvZGVUYXJn
ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggMGVmNmE1NWM5YzcxOTYw
M2YxYTJlMzhiNTgwNTY2ZjBhMjQ2N2JlMS4uNTdhYmI5YTRjMDNmMmE5ZmY1MWVjZWRjZGJmMjE0
ZTg0YTk0MDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTY1LDcgKzY1LDggQEAgdm9pZCBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNv
bnN0IEYKIAogdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEp
CiB7Ci0gICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgLy8g
S2VlcCBoaXRDb3VudEZvckxMSW50Q2FjaGluZyB2YWx1ZS4KKyAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CiAgICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
CmluZGV4IDljM2IwNjg0MjcwMzRiMDg5YmEwOThlODIyZmZkMGUxNmVmMzUwOTYuLjhmNjBlYjBm
NDBhYzNiMTZkNmFiMDNkYWRkYzYyMjg4OWNlYjRjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCkBAIC0x
MjksMTcgKzEyOSwxOCBAQCBzdHJ1Y3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUgOiBwdWJsaWMg
TWluaW1hbFZhbHVlUHJvZmlsZSB7CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IExhenlPcGVy
YW5kVmFsdWVQcm9maWxlKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpCi0g
ICAgICAgIDogTWluaW1hbFZhbHVlUHJvZmlsZShrZXkuYnl0ZWNvZGVPZmZzZXQoKSkKLSAgICAg
ICAgLCBtX29wZXJhbmQoa2V5Lm9wZXJhbmQoKSkKKyAgICAgICAgOiBNaW5pbWFsVmFsdWVQcm9m
aWxlKCkKKyAgICAgICAgLCBtX2tleShrZXkpCiAgICAgewogICAgIH0KICAgICAKICAgICBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBrZXkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KG1fYnl0ZWNvZGVPZmZzZXQsIG1fb3BlcmFuZCk7
CisgICAgICAgIHJldHVybiBtX2tleTsKICAgICB9CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBtX2tleTsKICAgICAK
ICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSwgOD4g
TGlzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFi
bGUuaAppbmRleCBhNWQ0MTIxYjFkNDFkMTYxYmYyNjU0MmUwOTI4NmNmYmQ5OTM5NWI4Li45NTRk
MGJhMTZkNzgyMTAzOTdiY2ZmZjk0ODY4OTgzYmEyMDJjNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTg4LDExICs4OCw2IEBAIGNs
YXNzIE1ldGFkYXRhVGFibGUgewogICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAg
IH0KIAotICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCo+KHRoaXMpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBNZXRhZGF0YVRhYmxlKFVubGlua2Vk
TWV0YWRhdGFUYWJsZSYpOwogCkBAIC0xMDEsNiArOTYsMTEgQEAgY2xhc3MgTWV0YWRhdGFUYWJs
ZSB7CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6
TGlua2luZ0RhdGEqPigoYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSAtIHNpemVvZihVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKSkpOwogICAgIH0KIAorICAgIFVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCo+KHRoaXMpOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCogZ2V0SW1wbCh1bnNpZ25lZCBpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBidWZmZXIoKVtp
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgKaW5kZXggYTcwNzUzYTdiOTk2NGRjOGM1YWY2MTgzZjM4MDJlMDU2
NGU1ZGU4Yy4uZjU2NzljOTNlNWNlMGQ0YzViYjE0OGFlMzVjNzI4ZTUzMjMzMzI5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmgKQEAgLTM1LDE3ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
RnVuY3Rpb25SYXJlRGF0YTsKIAotY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewordGVt
cGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFz
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2FsbG9jYXRvcik7IH0KLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX3N0cnVjdHVyZSk7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIG1faW5saW5lQ2FwYWNpdHkpOyB9CisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UsIG1fYWxsb2NhdG9yKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlLCBtX3N0cnVjdHVyZSk7IH0KIAotICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkKLSAgICAgICAgOiBtX2lubGluZUNhcGFjaXR5KDApCi0gICAgewot
ICAgIH0KKyAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UoKSA9IGRlZmF1bHQ7CiAKICAg
ICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQogCkBAIC01OCwzNyArNTUs
NzQgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogICAgICAgICBXVEY6OmxvYWRM
b2FkRmVuY2UoKTsKICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fYWxsb2NhdG9yID0gQWxsb2Nh
dG9yKCk7CisgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChpc051
bGwoKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKKyAgICB7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fc3RydWN0dXJlKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChW
TSYsIEpTT2JqZWN0KiBwcm90b3R5cGUpOworCisgICAgQWxsb2NhdG9yIG1fYWxsb2NhdG9yOyAv
LyBQcmVjb21wdXRlZCB0byBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIGdlbmVyYXRlZCBjb2RlLgor
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworfTsKKworY2xhc3MgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUgOiBwdWJsaWMgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
PE9iamVjdEFsbG9jYXRpb25Qcm9maWxlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT47CisKKyAg
ICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpID0gZGVmYXVsdDsKKworICAgIHVzaW5nIEJhc2U6
OmNsZWFyOworICAgIHVzaW5nIEJhc2U6OnZpc2l0QWdncmVnYXRlOworCisgICAgdm9pZCBzZXRQ
cm90b3R5cGUoVk0mLCBKU0NlbGwqLCBKU09iamVjdCopIHsgfQorfTsKKworY2xhc3MgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlIDogcHVibGljIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU+IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZT47CisKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGUoKSA9IGRlZmF1bHQ7CisKICAgICBKU09iamVjdCogcHJvdG90eXBl
KCkKICAgICB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBtX3Byb3RvdHlwZS5nZXQo
KTsKICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQotICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgeyByZXR1cm4gbV9pbmxp
bmVDYXBhY2l0eTsgfQotCiAKICAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1fYWxs
b2NhdG9yID0gQWxsb2NhdG9yKCk7Ci0gICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgIEJhc2U6OmNsZWFyKCk7CiAgICAgICAgIG1fcHJvdG90eXBlLmNsZWFyKCk7Ci0gICAgICAg
IG1faW5saW5lQ2FwYWNpdHkgPSAwOwogICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOwogICAgIH0K
IAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewot
ICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7CisgICAgICAgIEJhc2U6OnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3Byb3RvdHlwZSk7
CiAgICAgfQogCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQoVk0mLCBKU09iamVjdCogcHJvdG90eXBlKTsKKyAgICB2b2lkIHNldFByb3RvdHlwZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBt
X3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBvYmplY3QpOworICAgIH0KIAotICAgIEFsbG9jYXRv
ciBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZvciBn
ZW5lcmF0ZWQgY29kZS4KLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsK
K3ByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3Byb3RvdHlwZTsKLSAgICB1
bnNpZ25lZCBtX2lubGluZUNhcGFjaXR5OwogfTsKIAorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCmluZGV4IDQ5OTkxMjFiMTY2MDY0M2M4NTk3ZTMy
MGEwYTYyNWRkYzJjNWQ2ODIuLmYxMWM0Y2M0ZjVmNDNhYTZmNzM0Nzg1NDQwYWRmN2EwYmU4MTg5
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKQEAgLTMxLDEyICszMSwxMSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGluZmVy
cmVkSW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBGdW5jdGlvblJhcmVE
YXRhKiBmdW5jdGlvblJhcmVEYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK0FMV0FZ
U19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46OmluaXRp
YWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvd25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBh
Y2l0eSwgSlNGdW5jdGlvbiogY29uc3RydWN0b3IsIEZ1bmN0aW9uUmFyZURhdGEqIGZ1bmN0aW9u
UmFyZURhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CiAgICAgQVNTRVJUKCFtX3N0
cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFtX3Byb3RvdHlwZSk7Ci0gICAgQVNTRVJUKCFtX2lubGlu
ZUNhcGFjaXR5KTsKIAogICAgIC8vIEZJWE1FOiBUZWFjaCBjcmVhdGVfdGhpcydzIGZhc3QgcGF0
aCBob3cgdG8gYWxsb2NhdGUgcG9seQogICAgIC8vIHByb3RvIG9iamVjdHM6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc1MTcKQEAgLTU2LDggKzU1LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmls
ZShWTSYgdm0sIEpTR2xvYmFsT2IKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKICAgICAgICAgICAgIG1f
YWxsb2NhdG9yID0gQWxsb2NhdG9yKCk7CiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5zZXQodm0s
IG93bmVyLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9wcm90b3R5cGUuc2V0KHZtLCBvd25l
ciwgcHJvdG90eXBlKTsKLSAgICAgICAgICAgIG1faW5saW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUt
PmlubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxEZXJpdmVkKj4odGhp
cyktPnNldFByb3RvdHlwZSh2bSwgb3duZXIsIHByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTM4LDExICsxMzYsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lk
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xv
YmFsT2IKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogCiAgICAgbV9zdHJ1Y3R1cmUuc2V0
KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBw
cm90b3R5cGUpOwotICAgIG1faW5saW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKKyAgICBz
dGF0aWNfY2FzdDxEZXJpdmVkKj4odGhpcyktPnNldFByb3RvdHlwZSh2bSwgb3duZXIsIHByb3Rv
dHlwZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoVk0mIHZtLCBKU09iamVjdCogcHJvdG90
eXBlKQordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK0FMV0FZU19JTkxJTkUgdW5zaWduZWQg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9w
ZXJ0eUNvdW50KFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKICAgICBpZiAocHJvdG90
eXBlID09IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+b2JqZWN0UHJvdG90eXBlKCkpCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmlu
ZGV4IDhhYzYwM2UzY2M1ZjdiMTkzNTQ0YmIwY2ZmMDg0OGRkYjIyMDc0Y2UuLjQ0MjdkZDk4YTQw
NzE2ZjllMzhjNDY5ZTcyY2YwYjYwZTljYzU5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKQEAgLTExMSwxMCArMTExLDYgQEAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVk
IG9wY29kZUxlbmd0aHNbXTsKICAgICBtYWNybyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykg
XAogICAgIG1hY3JvKE9wQ29uc3RydWN0VmFyYXJncykgXAogICAgIG1hY3JvKE9wR2V0QnlWYWwp
IFwKLSAgICBtYWNybyhPcENhbGwpIFwKLSAgICBtYWNybyhPcFRhaWxDYWxsKSBcCi0gICAgbWFj
cm8oT3BDYWxsRXZhbCkgXAotICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCiAgICAgbWFjcm8oT3BJ
bkJ5VmFsKSBcCiAgICAgbWFjcm8oT3BQdXRCeVZhbCkgXAogICAgIG1hY3JvKE9wUHV0QnlWYWxE
aXJlY3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aAppbmRleCBmYTBkM2IwN2EzYzQ0NmJkMWEwMDMwZTUxMjQxODRlM2I0NGZhZTk1Li40ODgzYjRi
M2QyMWJiZmM4ZWQ2NmNmYjk0NzU5MGQ3MDk1YWI2MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCkBAIC00NCwxNCArNDQsNiBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRvdGFsTnVtYmVy
T2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRzICsgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tldHM7CiAg
ICAgCiAgICAgVmFsdWVQcm9maWxlQmFzZSgpCi0gICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgt
MSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9m
QnVja2V0czsgKytpKQotICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7Ci0gICAgfQotICAgIAotICAgIFZhbHVlUHJvZmlsZUJhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAg
ICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tl
dHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwpAQCAtODYsOCArNzgsMTAgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAg
IAogICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBudW1iZXJPZlNhbXBsZXMoKSArIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0
aW9uOworICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBpc1NhbXBsZWRCZWZvcmUo
KTsKICAgICB9CisKKyAgICBib29sIGlzU2FtcGxlZEJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZTsgfQogICAgIAogICAgIGJvb2wgaXNMaXZlKCkgY29uc3QK
ICAgICB7CkBAIC0xMDksNyArMTAzLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIHsKLSAgICAgICAgb3V0LnBy
aW50KCJzYW1wbGVzID0gIiwgdG90YWxOdW1iZXJPZlNhbXBsZXMoKSwgIiBwcmVkaWN0aW9uID0g
IiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOworICAgICAgICBvdXQucHJpbnQoInNh
bXBsZWQgYmVmb3JlID0gIiwgaXNTYW1wbGVkQmVmb3JlKCksICIgbGl2ZSBzYW1wbGVzID0gIiwg
bnVtYmVyT2ZTYW1wbGVzKCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3By
ZWRpY3Rpb24pKTsKICAgICAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CkBAIC0xMzMs
NyArMTI3LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKICAgICAgICAgICAgIG1lcmdlU3Bl
Y3VsYXRpb24obV9wcmVkaWN0aW9uLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKQEAgLTE0MiwxNyArMTM1LDEzIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKICAgICB9CiAgICAgCi0gICAgaW50IG1fYnl0
ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZT
YW1wbGVzSW5QcmVkaWN0aW9uIHsgMCB9OwotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJl
ZGljdGlvbiB7IFNwZWNOb25lIH07Ci0gICAgCiAgICAgRW5jb2RlZEpTVmFsdWUgbV9idWNrZXRz
W3RvdGFsTnVtYmVyT2ZCdWNrZXRzXTsKKworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlv
biB7IFNwZWNOb25lIH07CiB9OwogCiBzdHJ1Y3QgTWluaW1hbFZhbHVlUHJvZmlsZSA6IHB1Ymxp
YyBWYWx1ZVByb2ZpbGVCYXNlPDA+IHsKICAgICBNaW5pbWFsVmFsdWVQcm9maWxlKCk6IFZhbHVl
UHJvZmlsZUJhc2U8MD4oKSB7IH0KLSAgICBNaW5pbWFsVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCk6IFZhbHVlUHJvZmlsZUJhc2U8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAog
dGVtcGxhdGU8dW5zaWduZWQgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CkBAIC0xNjMsMjMg
KzE1MiwxMiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyA6IHB1
YmxpYyBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYgogICAgICAgICA6IFZhbHVlUHJvZmls
ZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oKQogICAgIHsKICAgICB9Ci0g
ICAgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyhpbnQgYnl0ZWNvZGVPZmZzZXQp
Ci0gICAgICAgIDogVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWJlck9mQnVja2V0c0FyZ3Vt
ZW50PihieXRlY29kZU9mZnNldCkKLSAgICB7Ci0gICAgfQogfTsKIAogc3RydWN0IFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAg
ICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4o
KSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmls
ZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZz
ZXQoVCogdmFsdWVQcm9maWxlKQotewotICAgIHJldHVybiB2YWx1ZVByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQ7Ci19Ci0KIC8vIFRoaXMgaXMgYSBtaW5pIHZhbHVlIHByb2ZpbGUgdG8gY2F0Y2gg
cGF0aG9sb2dpZXMuIEl0IGlzIGEgY291bnRlciB0aGF0IGdldHMKIC8vIGluY3JlbWVudGVkIHdo
ZW4gd2UgdGFrZSB0aGUgc2xvdyBwYXRoIG9uIGFueSBpbnN0cnVjdGlvbi4KIHN0cnVjdCBSYXJl
Q2FzZVByb2ZpbGUgewpAQCAtMTk4LDggKzE3Niw3IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQ
cm9maWxlQnl0ZWNvZGVPZmZzZXQoUmFyZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2ZpbGUpCiAg
ICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAotc3RydWN0
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgewotICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7Citz
dHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCA6IHB1YmxpYyBWYWx1ZVByb2ZpbGUgewogICAg
IGludCBtX29wZXJhbmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDY1MDVhZDU3OTM0NzAyMTE5YzU4ZmI2Nzg3ZDlhNmNk
ODgzNGQzYzUuLmI2ODY1ZjdhY2FjNzEyMGQ4ZjE2YTViNGE2NDU3MDZiZWQ2YTBjY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00
Nzk1LDcgKzQ3OTUsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXRUaGlzKCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCisg
ICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KGNhY2hlZFN0cnVjdHVyZUlEKTsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5t
X3RvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwogICAgICAgICAgICAgICAgIHx8ICFjYWNoZWRTdHJ1
Y3R1cmUKICAgICAgICAgICAgICAgICB8fCBjYWNoZWRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS50b1RoaXMgIT0gSlNPYmplY3Q6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlz
CkBAIC02MDExLDcgKzYwMTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IGVlNTNkNjFkN2Y3NTQ2NzgxYTkwNDY3NjBmMmE1YTllZjM4YjZl
ZDUuLjI1YzRjMDkwZDYwMDFlNmJjMTFmNDBiNjQ2YjlkZjY3NmI2YzA0MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzU1LDcgKzM1NSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGNvbnN0cnVjdG9yCiAgICAgaWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0g
SlNGdW5jdGlvblR5cGUgJiYganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVz
ZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAgYXV0byByYXJlRGF0YSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9m
aWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKCk7Ci0gICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBhbGxvY2F0aW9u
UHJvZmlsZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgICAgICBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUqIGFsbG9jYXRpb25Qcm9maWxlID0g
cmFyZURhdGEtPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgICAgICBKU09i
amVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZGViZDAzZWIxZWM2ODVk
MDdjMGE3NWIxZThkM2ZhNGE5ZTVjNjc1Mi4uZDA0MTBiMzVkMzkwMTdmODBkYjU5MDVlZDQ5MmQz
ZTMzODY4YmM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTEyNTY1LDE0ICsxMjU2NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlVGhpcyhOb2RlKiBub2RlKQogICAgIHNsb3dQYXRoLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZUdQUikpOwogICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRh
KCkpLCByYXJlRGF0YUdQUik7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7Ci0gICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwotICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpv
ZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOworICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7
CiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBKSVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFs
bG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2hHUFIsIHNsb3dQYXRo
KTsKIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7Ci0gICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRh
OjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOworICAg
IG1faml0LmxvYWQ4KEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0
LmVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRHUFIsIGlubGluZUNhcGFjaXR5R1BS
KTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4
IDg5OTk1ZTY3NDhkM2YyNDJhNWUwMjA1Y2EwY2FlMTY0NTgzOTdlMzAuLjcwYzk5M2E3MThhNzcx
ZjE2MWRjZjJiZTM0MjEyZjA5MThlYjlmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC01Nyw4ICs1Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVu
dHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBc
CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1l
bnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRP
Zk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJl
RGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigp
KSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0
YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZB
bGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAg
ICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVy
KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNl
dE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAppbmRleCBhZmM0YjI5NTNkMzIyNWRlMDg2MTY3Mjc0NzNjYWQ3Y2VjM2RjMjU5
Li5jMDY0Mzg3YmVhNjBjNDkzODczYTFlOTFlNTVkNGQ1NTlmN2FjNzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSklUOjpjb21waWxlU2V0
dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyopCiAgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAg
ICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmls
ZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
aW5kZXggYjQyZTk5N2FhYjYzZGJiMTUyZGFlMjQyZDdiOTRmMGUzNGU5MzY5Ny4uYWY2MDhmMDMx
MGQxOGViMmZiYmUyZGQ2ODRiMmU1Y2VmZDgzYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEpJVDo6Y29tcGlsZVNl
dHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogICAgICAgICBlbWl0
TG9hZChyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKDApLCByZWdUMCwgcmVnVDEpOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENl
bGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBzdG9yZTMyKHJlZ1QxLCBtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICBz
dG9yZTMyKHJlZ1QxLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAxOGNl
YmE2YWQ5MGI4MDhjNGUwNGZmZDE4ZjFjYjkyNjUyMmY0MjYyLi5mMDVkYmE5NjRiMmU2NzdhODkz
YjFkZDFlZmJhZGMyNGMzZTgzYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVncyByZWdzKHJlZ1QwKTsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOwotICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZSY+KHByb2ZpbGUpKTsKICAgICAgICAgfSk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpAQCAtODc4LDE1ICs4NzgsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VG9UaGlzPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJl
ID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRT
dHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCksIHJlZ1QxKTsKIAogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7CiAKICAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdFR5cGUocmVnVDEsIEZpbmFsT2JqZWN0VHlwZSkpOwotICAgIGxvYWRQdHIoY2Fj
aGVkU3RydWN0dXJlLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJv
LCByZWdUMikpOwotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMik7CisgICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdU
Mik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKQEAgLTkwOCw4ICs5MDYs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90RnVuY3Rpb24oY2Fs
bGVlUmVnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFSZWcpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFS
ZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSAr
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9y
UmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zm
c2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJh
cmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3Ry
dWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOwogCiAgICAgbG9hZFB0cihjYWNoZWRGdW5jdGlvbiwg
Y2FjaGVkRnVuY3Rpb25SZWcpOwogICAgIEp1bXAgaGFzU2Vlbk11bHRpcGxlQ2FsbGVlcyA9IGJy
YW5jaFB0cihFcXVhbCwgY2FjaGVkRnVuY3Rpb25SZWcsIFRydXN0ZWRJbW1QdHIoSlNDZWxsOjpz
ZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpKTsKQEAgLTkxOSw5ICs5MTcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0
ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBK
SVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCBidXR0
ZXJmbHksIHNjcmF0Y2hSZWcsIHNsb3dDYXNlcyk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoUmVnLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkMzIo
QWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZJbmxpbmVD
YXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmVSZWcs
IFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIGVt
aXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKaW5kZXggMjVhOWM4ZjM1MGFkYzNlNjk0NDBkYWNhMzRkODI0MjJlZTRmMTgy
Yy4uOTdhZTJmYmU1YjJmMzc1OTU0NDQ4ZGU4NWE4MTExOGRlZDg5ZDAzZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtODk5LDcgKzg5OSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQmIHByb2ZpbGUpIHsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MocmVnVDEsIHJl
Z1QwKTsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJh
bmQsIHJlZ3MpOwotICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShwcm9maWxlLm1f
cHJvZmlsZSk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHByb2ZpbGUpOwog
ICAgICAgICB9KTsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCkBAIC0xMDIwLDgg
KzEwMjAsOCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlv
biogY3VycmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90RnVuY3Rp
b24oY2FsbGVlUmVnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlv
bjo6b2Zmc2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFSZWcpOwogICAgIGFkZFNsb3dDYXNlKGJy
YW5jaFRlc3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhyYXJl
RGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmls
ZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxv
Y2F0b3JSZWcpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJl
RGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOworICAgIGxvYWQz
MihBZGRyZXNzKHJhcmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JSZWcpOworICAgIGxvYWRQdHIoQWRkcmVz
cyhyYXJlRGF0YVJlZywgRnVuY3Rpb25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9u
UHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRP
ZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKIAogICAgIGxvYWRQdHIoY2FjaGVkRnVuY3Rp
b24sIGNhY2hlZEZ1bmN0aW9uUmVnKTsKICAgICBKdW1wIGhhc1NlZW5NdWx0aXBsZUNhbGxlZXMg
PSBicmFuY2hQdHIoRXF1YWwsIGNhY2hlZEZ1bmN0aW9uUmVnLCBUcnVzdGVkSW1tUHRyKEpTQ2Vs
bDo6c2Vlbk11bHRpcGxlQ2FsbGVlT2JqZWN0cygpKSk7CkBAIC0xMDMxLDkgKzEwMzEsNyBAQCB2
b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudElu
c3RydWN0aW9uKQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBhdXRvIGJ1dHRlcmZseSA9
IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0
UmVnLCBKSVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVn
LCBidXR0ZXJmbHksIHNjcmF0Y2hSZWcsIHNsb3dDYXNlcyk7Ci0gICAgZW1pdExvYWRQYXlsb2Fk
KGNhbGxlZSwgc2NyYXRjaFJlZyk7Ci0gICAgbG9hZFB0cihBZGRyZXNzKHNjcmF0Y2hSZWcsIEpT
RnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHNjcmF0Y2hSZWcpOwotICAgIGxvYWQzMihB
ZGRyZXNzKHNjcmF0Y2hSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZklubGluZUNh
cGFjaXR5KCkpLCBzY3JhdGNoUmVnKTsKKyAgICBsb2FkOChBZGRyZXNzKHN0cnVjdHVyZVJlZywg
U3RydWN0dXJlOjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgc2NyYXRjaFJlZyk7CiAgICAgZW1p
dEluaXRpYWxpemVJbmxpbmVTdG9yYWdlKHJlc3VsdFJlZywgc2NyYXRjaFJlZyk7CiAgICAgYWRk
U2xvd0Nhc2Uoc2xvd0Nhc2VzKTsKICAgICBlbWl0U3RvcmVDZWxsKGJ5dGVjb2RlLm1fZHN0Lm9m
ZnNldCgpLCByZXN1bHRSZWcpOwpAQCAtMTA0Myw3ICsxMDQxLDcgQEAgdm9pZCBKSVQ6OmVtaXRf
b3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogewogICAg
IGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9wVG9UaGlzPigpOwogICAg
IGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2RlQmxvY2spOwotICAgIFdy
aXRlQmFycmllckJhc2U8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJlID0gJm1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRTdHJ1Y3R1cmVJRCA9ICZt
ZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgIGludCB0aGlzUmVnaXN0ZXIgPSBieXRl
Y29kZS5tX3NyY0RzdC5vZmZzZXQoKTsKIAogICAgIGVtaXRMb2FkKHRoaXNSZWdpc3RlciwgcmVn
VDMsIHJlZ1QyKTsKQEAgLTEwNTEsNyArMTA0OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3Ro
aXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBhZGRTbG93Q2Fz
ZShicmFuY2hJZk5vdENlbGwocmVnVDMpKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hJZk5vdFR5
cGUocmVnVDIsIEZpbmFsT2JqZWN0VHlwZSkpOwogICAgIGxvYWRQdHIoQWRkcmVzcyhyZWdUMiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgIGxvYWRQdHIoY2FjaGVk
U3RydWN0dXJlLCByZWdUMik7CisgICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdUMik7
CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoUHRyKE5vdEVxdWFsLCByZWdUMCwgcmVnVDIpKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNWEw
MDNhYWYzMDAzMWZkMzYxZGY0MGI3ZGU3YTI2YjI1NmY4ZWNkOC4uMTJiNzhhYWRmNDU4OWRkNDgz
Y2M4NzkyZDJkNjM4NjM1MTk5MGVmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwCkBAIC0xNjk1LDcgKzE2OTUsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblRyeU9TUkVudGVyQXRDYXRjaEFuZFZhbHVlUHJvZmlsZShFeGVjU3RhdGUqIGV4
ZWMsCiAgICAgYXV0byBieXRlY29kZSA9IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYXQoYnl0
ZWNvZGVJbmRleCktPmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29k
ZS5tZXRhZGF0YShjb2RlQmxvY2spOwogICAgIG1ldGFkYXRhLm1fYnVmZmVyLT5mb3JFYWNoKFsm
XSAoVmFsdWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewotICAgICAgICBwcm9maWxlLm1f
cHJvZmlsZS5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihw
cm9maWxlLm1fb3BlcmFuZCkuanNWYWx1ZSgpKTsKKyAgICAgICAgcHJvZmlsZS5tX2J1Y2tldHNb
MF0gPSBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+dW5jaGVja2VkUihwcm9maWxlLm1fb3BlcmFuZCku
anNWYWx1ZSgpKTsKICAgICB9KTsKIAogICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAppbmRleCA1MTlhZDdhZWMz
NjRhYmE5MjY2MDE0YzJkM2ViNDYyZDI1OWIzNzEzLi45ZDYyMTQ4MWY3NzQ3NGVmYjgzMWJkNGU1
ZjFmNTgyMjllMzMyNTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcApAQCAtNTgzLDcgKzU4Myw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMCwgYmFzZVZSZWcpOwogICAgIAogICAgIGlmICgq
aWRlbnQgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+bGVuZ3RoICYmIHNob3VsZEVtaXRQcm9maWxp
bmcoKSkgewotICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1
YWwsIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRp
Y19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKKyAgICAgICAgSnVt
cCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3Mo
Jm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKSkpOwogICAgICAgICBlbWl0QXJyYXlQ
cm9maWxpbmdTaXRlV2l0aENlbGwocmVnVDAsIHJlZ1QxLCAmbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSk7CiAgICAgICAgIG5vdEFycmF5TGVuZ3Ro
TW9kZS5saW5rKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCmluZGV4IGUyZGExMTVlY2QzY2RmMTNlOWRi
MWQwNzQ1ZGUzN2JlZjhkYzQyODcuLmMxNTFlYWY3ZDRjODFhNjgzMTQ3ZjY5NzJkYzJiZGE3NmMz
OTgxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2VzczMyXzY0LmNwcApAQCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQgSklUOjplbWl0X29wX2dl
dF9ieV9pZChjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgIGVtaXRK
dW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChiYXNlLCByZWdUMSk7CiAKICAgICBpZiAoKmlkZW50ID09
IG1fdm0tPnByb3BlcnR5TmFtZXMtPmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsK
LSAgICAgICAgSnVtcCBub3RBcnJheUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNv
bHV0ZUFkZHJlc3MoJm1ldGFkYXRhLm1fbW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1
aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJy
YXlMZW5ndGhNb2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5tb2RlKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KEdldEJ5SWRNb2RlOjpBcnJheUxlbmd0aCkpKTsKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5n
U2l0ZVdpdGhDZWxsKHJlZ1QwLCByZWdUMiwgJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5
TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpOwogICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGlu
ayh0aGlzKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAppbmRleCAyZTkwYzcwMWRhMWVjNzViMTgyMmFhNmQ3YjNiZTdjNzQyNmYyNWI3
Li4yNTRmY2RjZGRhZmQ2MjRjMDc1ODAxMDc2YzgwN2Q4Nzc3ZjFmZTdlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKQEAgLTc0MCwxOSArNzQw
LDI0IEBAIHN0YXRpYyB2b2lkIHNldHVwR2V0QnlJZFByb3RvdHlwZUNhY2hlKEV4ZWNTdGF0ZSog
ZXhlYywgVk0mIHZtLCBjb25zdCBJbnN0cnVjdGlvCiAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxv
Y2tlcihjb2RlQmxvY2stPm1fbG9jayk7CiAKICAgICBpZiAoc2xvdC5pc1Vuc2V0KCkpIHsKLSAg
ICAgICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1vZGU6OlVuc2V0OworICAgICAgICBtZXRh
ZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OlVuc2V0OwogICAgICAgICBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS51bnNldE1vZGUuc3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUt
PmlkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgQVNTRVJUKHNsb3QuaXNWYWx1ZSgp
KTsKIAotICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ7CisgICAg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdldEJ5SWRNb2RlOjpQcm90b0xvYWQ7IC8v
IFRoaXMgbXVzdCBiZSBmaXJzdCBzZXQuIEluIDY0Yml0IGFyY2hpdGVjdHVyZSwgdGhpcyBmaWVs
ZCBpcyBzaGFyZWQgd2l0aCBwcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QuCiAgICAgbWV0YWRhdGEu
bV9tb2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRCA9IHN0cnVjdHVyZS0+aWQo
KTsKICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNl
dCA9IG9mZnNldDsKLSAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNh
Y2hlZFNsb3QgPSBzbG90LnNsb3RCYXNlKCk7CiAgICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgcG9p
bnRlciB3aWxsIHJlbWFpbiB2YWxpZCBiZWNhdXNlIGl0IHdpbGwgYmUgY2xlYXJlZCBieSBlaXRo
ZXIgYSB3YXRjaHBvaW50IGZpcmUgb3IKICAgICAvLyBkdXJpbmcgR0Mgd2hlbiB3ZSBjbGVhciB0
aGUgTExJbnQgY2FjaGVzLgogICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1v
ZGUuY2FjaGVkU2xvdCA9IHNsb3Quc2xvdEJhc2UoKTsKKworICAgIEFTU0VSVChtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5tb2RlID09IEdldEJ5SWRNb2RlOjpQcm90b0xvYWQpOworICAgIEFTU0VS
VCghbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcpOworICAg
IEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLnN0cnVjdHVyZUlE
ID09IHN0cnVjdHVyZS0+aWQoKSk7CisgICAgQVNTRVJUKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LnByb3RvTG9hZE1vZGUuY2FjaGVkT2Zmc2V0ID09IG9mZnNldCk7CisgICAgQVNTRVJUKG1ldGFk
YXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUuY2FjaGVkU2xvdCA9PSBzbG90LnNsb3RC
YXNlKCkpOwogfQogCiAKQEAgLTc3NSw4ICs3ODAsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKICAg
ICAgICAgewogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJlSUQ7Ci0gICAgICAg
ICAgICBhdXRvIG1vZGUgPSBtZXRhZGF0YS5tX21vZGU7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1v
ZGUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSkg
ewogICAgICAgICAgICAgY2FzZSBHZXRCeUlkTW9kZTo6RGVmYXVsdDoKICAgICAgICAgICAgICAg
ICBvbGRTdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0
cnVjdHVyZUlEOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtODA0LDEyICs4MDgsMTIgQEAg
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKHZtKTsKICAgICAgICAgaWYgKHNs
b3QuaXNWYWx1ZSgpICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUpIHsKICAgICAgICAg
ICAgIC8vIFN0YXJ0IG91dCBieSBjbGVhcmluZyBvdXQgdGhlIG9sZCBjYWNoZS4KLSAgICAgICAg
ICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OworICAgICAgICAgICAg
bWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OwogICAg
ICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3RydWN0dXJlSUQg
PSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2Fj
aGVkT2Zmc2V0ID0gMDsKIAogICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNh
Y2hlIGZyb20gZXZlciBoYXBwZW5pbmcuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX2hpdENvdW50
Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmhpdENvdW50Rm9yTExJbnRDYWNoaW5nID0gMDsKICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
c3RydWN0dXJlLT5wcm9wZXJ0eUFjY2Vzc2VzQXJlQ2FjaGVhYmxlKCkKICAgICAgICAgICAgICAg
ICAmJiAhc3RydWN0dXJlLT5uZWVkSW1wdXJlUHJvcGVydHlXYXRjaHBvaW50KCkpIHsKQEAgLTgy
MCwyMSArODI0LDIyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQp
CiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuc3Ry
dWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgICAgICAgICAgICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtZXRhZGF0YS5t
X2hpdENvdW50Rm9yTExJbnRDYWNoaW5nICYmIChzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5z
ZXQoKSkpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEubV9tb2RlTWV0
YWRhdGEuaGl0Q291bnRGb3JMTEludENhY2hpbmcgJiYgKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3Qu
aXNVbnNldCgpKSkpIHsKICAgICAgICAgICAgIEFTU0VSVChzbG90LnNsb3RCYXNlKCkgIT0gYmFz
ZVZhbHVlKTsKIAotICAgICAgICAgICAgaWYgKCEoLS1tZXRhZGF0YS5tX2hpdENvdW50Rm9yTExJ
bnRDYWNoaW5nKSkKKyAgICAgICAgICAgIGlmICghKC0tbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
aGl0Q291bnRGb3JMTEludENhY2hpbmcpKQogICAgICAgICAgICAgICAgIHNldHVwR2V0QnlJZFBy
b3RvdHlwZUNhY2hlKGV4ZWMsIHZtLCBwYywgbWV0YWRhdGEsIGJhc2VDZWxsLCBzbG90LCBpZGVu
dCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKCFMTElOVF9BTFdBWVNfQUNDRVNTX1NMT1cK
ICAgICAgICAgJiYgaXNKU0FycmF5KGJhc2VWYWx1ZSkKICAgICAgICAgJiYgaWRlbnQgPT0gdm0u
cHJvcGVydHlOYW1lcy0+bGVuZ3RoKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5
SWRNb2RlOjpBcnJheUxlbmd0aDsKLSAgICAgICAgbmV3ICgmbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmlsZSkgQXJyYXlQcm9maWxlKGNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQocGMpKTsKKyAgICAgICAgQ29uY3VycmVudEpTTG9ja2VyIGxvY2tlcihj
b2RlQmxvY2stPm1fbG9jayk7CisgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7CisgICAgICAgIG5ldyAoJm1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUpIEFycmF5UHJvZmlsZTsKICAg
ICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZS5vYnNlcnZlU3RydWN0dXJlKGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKHZtKSk7CiAK
ICAgICAgICAgLy8gUHJldmVudCB0aGUgcHJvdG90eXBlIGNhY2hlIGZyb20gZXZlciBoYXBwZW5p
bmcuCi0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOworICAg
ICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7
CiAgICAgfQogCiAgICAgTExJTlRfUFJPRklMRV9WQUxVRShyZXN1bHQpOwpAQCAtMTUwMiwxMiAr
MTUwNyw3IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luCiAgICAgICAgICAgICAgICAgQ29kZUJs
b2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKIAogICAgICAgICAgICAg
ICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY2FsbGVyQ29kZUJsb2NrLT5tX2xvY2spOwot
Ci0gICAgICAgICAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKLSAgICAgICAg
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKLSAgICAgICAgICAgICAgICBjYWxs
TGlua0luZm8tPmNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlv
bik7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQodm0s
IGNhbGxlckNvZGVCbG9jaywgaW50ZXJuYWxGdW5jdGlvbik7Ci0gICAgICAgICAgICAgICAgY2Fs
bExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLT5saW5rKHZtLCBjYWxsZXJDb2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24s
IGNvZGVQdHIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBhc3NlcnRJc1RhZ2dlZFdp
dGgoY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpLCBKU0VudHJ5UHRyVGFnKTsKQEAgLTE1NTAs
MTIgKzE1NTAsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbgogICAgICAgICBDb2RlQmxvY2sq
IGNhbGxlckNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogCiAgICAgICAgIENvbmN1cnJl
bnRKU0xvY2tlciBsb2NrZXIoY2FsbGVyQ29kZUJsb2NrLT5tX2xvY2spOwotICAgICAgICAKLSAg
ICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKLSAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+cmVtb3ZlKCk7Ci0gICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldCh2bSwgY2Fs
bGVyQ29kZUJsb2NrLCBjYWxsZWUpOwotICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2Fs
bGVlLnNldCh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxsZWUpOwotICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5s
aW5rKHZtLCBjYWxsZXJDb2RlQmxvY2ssIGNhbGxlZSwgY29kZVB0cik7CiAgICAgICAgIGlmIChj
b2RlQmxvY2spCiAgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoZXhlYywg
Y2FsbExpbmtJbmZvKTsKICAgICB9CkBAIC0xOTI4LDcgKzE5MjMsNyBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9jYXRjaCkKICAgICBhdXRvIGJ5dGVjb2RlID0gcGMt
PmFzPE9wQ2F0Y2g+KCk7CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShl
eGVjKTsKICAgICBtZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFu
ZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRz
WzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQp
LmpzVmFsdWUoKSk7CisgICAgICAgIHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5j
b2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAg
fSk7CiAKICAgICBMTElOVF9FTkQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KaW5kZXggYzc3ZmI3ZTM2YmNk
ZTUzZWEzNGFkZTdlNDgzOTA2YWVjNWJmMzYzMi4uYzJlNjBhYjZkZmIwYjJkOGQ4ODY4NzUwY2Y1
OGJlOWYzMzVhMTBkZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5hc20KQEAgLTc0NSw3ICs3NDUsNyBAQCBsbGlu
dE9wV2l0aE1ldGFkYXRhKG9wX3RvX3RoaXMsIE9wVG9UaGlzLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsCiAgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKICAgICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9U
aGlzU2xvdwogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAgICBsb2FkcCBPcFRvVGhpczo6TWV0YWRh
dGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRh
dGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgogICAgIGJpbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVJRFt0MF0sIHQyLCAub3BUb1RoaXNTbG93CiAgICAgZGlzcGF0Y2goKQogCkBAIC0xMzQ0
LDcgKzEzNDQsNyBAQCBlbmQpCiAKIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfZ2V0X2J5X2lkLCBP
cEdldEJ5SWQsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwgcmV0dXJuKQog
ICAgIG1ldGFkYXRhKHQ1LCB0MCkKLSAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1ldGFkYXRhOjptX21v
ZGVbdDVdLCB0MQorICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZU1ldGFkYXRh
Lm1vZGVbdDVdLCB0MQogICAgIGdldChtX2Jhc2UsIHQwKQogCiAub3BHZXRCeUlkUHJvdG9Mb2Fk
OgpAQCAtMTgyMyw3ICsxODIzLDcgQEAgbWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVT
dHJ1Y3QsIGdldHUpCiAgICAgYmluZXEgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdLCBDZWxsVGFnLCAuZG9uZQogICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCAr
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQwCiAgICAgbG9hZGkgSlNDZWxsOjptX3N0cnVj
dHVyZUlEW3QwXSwgdDAKLSAgICBzdG9yZWkgdDAsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1XQorICAgIHN0b3JlaSB0MCwg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5t
X2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCiAuZG9uZToKIGVuZAogCkBAIC0xODM2LDcgKzE4MzYs
NyBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVj
dCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBlbmQsIG1ldGFkYXRhKQogCiAgICAg
ICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9jYWxsTGlua0luZm8uY2FsbGVlW3Q1XSwgdDIKKyAgICAgICAgbG9hZHAgJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNlZW5DYWxs
ZWVXaXRoTGlua0JpdFt0NV0sIHQyCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHNpemUsIHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCiAgICAgICAgIGJpbmVxIHQz
LCB0MiwgLm9wQ2FsbFNsb3cKICAgICAgICAgZ2V0dShzaXplLCBvcGNvZGVTdHJ1Y3QsIG1fYXJn
diwgdDMpCkBAIC0xODQ5LDggKzE4NDksOCBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFt
ZSwgc2xvd1BhdGgsIG9wY29kZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAg
ICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQogICAgICAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQogICAgICAgICBtb3ZlIHQzLCBz
cAotICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExp
bmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykK
LSAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gs
ICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJn
ZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBwcmVwYXJlQ2FsbCglb3Bjb2RlU3RydWN0
JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0Miwg
dDMsIHQ0LCBKU0VudHJ5UHRyVGFnKQorICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwg
b3Bjb2RlU3RydWN0LCBkaXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKIAogICAgIC5v
cENhbGxTbG93OgogICAgICAgICBzbG93UGF0aEZvckNhbGwoc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgc2xvd1BhdGgsIHByZXBhcmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQppbmRleCBjODA3NDM1ODQ1
MDljZmVlMzA5OTNhNmViMTEyNTVkMjEzMzUxYzYyLi44MTE5ZGEyY2JmZjdhYjQ4MjAzMmI3MmFk
MzM3YjUxYWJmYjE5YzM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbQpAQCAtNzAxLDEwICs3MDEsMTAgQEAgbGxpbnRP
cFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBPcFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlz
cGF0Y2gsIG1ldGFkYXRhLAogICAgIGxvYWRxIFtjZnIsIHQwLCA4XSwgdDAKICAgICBidHFueiB0
MCwgdGFnTWFzaywgLm9wVG9UaGlzU2xvdwogICAgIGJibmVxIEpTQ2VsbDo6bV90eXBlW3QwXSwg
RmluYWxPYmplY3RUeXBlLCAub3BUb1RoaXNTbG93Ci0gICAgbG9hZFN0cnVjdHVyZVdpdGhTY3Jh
dGNoKHQwLCB0MSwgdDIsIHQzKQorICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0s
IHQxCiAgICAgbWV0YWRhdGEodDIsIHQzKQotICAgIGxvYWRwIE9wVG9UaGlzOjpNZXRhZGF0YTo6
bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCB0MgotICAgIGJwbmVxIHQxLCB0MiwgLm9wVG9UaGlzU2xv
dworICAgIGxvYWRpIE9wVG9UaGlzOjpNZXRhZGF0YTo6bV9jYWNoZWRTdHJ1Y3R1cmVJRFt0Ml0s
IHQyCisgICAgYmluZXEgdDEsIHQyLCAub3BUb1RoaXNTbG93CiAgICAgZGlzcGF0Y2goKQogCiAu
b3BUb1RoaXNTbG93OgpAQCAtMTI4OCw3ICsxMjg4LDcgQEAgZW5kKQogCiBsbGludE9wV2l0aE1l
dGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBkaXNwYXRj
aCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0MiwgdDEpCi0gICAgbG9hZGIgT3BH
ZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlW3QyXSwgdDEKKyAgICBsb2FkYiBPcEdldEJ5SWQ6Ok1l
dGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2RlW3QyXSwgdDEKICAgICBnZXQobV9iYXNlLCB0MCkK
ICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlQ2VsbChzaXplLCB0MCwgdDMsIC5vcEdldEJ5SWRT
bG93KQogCkBAIC0xOTE4LDcgKzE5MTgsNyBAQCBtYWNybyBhcnJheVByb2ZpbGVGb3JDYWxsKG9w
Y29kZVN0cnVjdCwgZ2V0dSkKICAgICBsb2FkcSBUaGlzQXJndW1lbnRPZmZzZXRbY2ZyLCB0Mywg
OF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5kb25lCiAgICAgbG9hZGkgSlNDZWxsOjpt
X3N0cnVjdHVyZUlEW3QwXSwgdDMKLSAgICBzdG9yZWkgdDMsICVvcGNvZGVTdHJ1Y3QlOjpNZXRh
ZGF0YTo6bV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1XQorICAgIHN0b3Jl
aSB0MywgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2FycmF5UHJv
ZmlsZS5tX2xhc3RTZWVuU3RydWN0dXJlSURbdDVdCiAuZG9uZToKIGVuZAogCkBAIC0xOTMxLDcg
KzE5MzEsNyBAQCBtYWNybyBjb21tb25DYWxsT3Aob3Bjb2RlTmFtZSwgc2xvd1BhdGgsIG9wY29k
ZVN0cnVjdCwgcHJlcGFyZUNhbGwsIHByb2xvZ3VlKQogICAgICAgICBlbmQsIG1ldGFkYXRhKQog
CiAgICAgICAgIGdldChtX2NhbGxlZSwgdDApCi0gICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3Ql
OjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8uY2FsbGVlW3Q1XSwgdDIKKyAgICAgICAgbG9hZHAg
JW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tX2NhbGxlZU9yTGFzdFNl
ZW5DYWxsZWVXaXRoTGlua0JpdFt0NV0sIHQyCiAgICAgICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoc2l6ZSwgdDAsIHQzKQogICAgICAgICBicW5lcSB0MywgdDIsIC5vcENhbGxTbG93CiAgICAg
ICAgIGdldHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQpAQCAtMTk0Myw4ICsxOTQz
LDggQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1
Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0KICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNh
bGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRh
cmdldFt0NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRG
dW5jdGlvbihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0
YWRhdGE6Om1fY2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRh
ZykKKyAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxM
aW5rSW5mby5tX21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRh
ZykKKyAgICAgICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0
Y2gsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29k
ZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKICAgICAgICAg
c2xvd1BhdGhGb3JDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBw
cmVwYXJlQ2FsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCmluZGV4IDg1NDQxODg4MzZmZTY4OWNkOGE2N2QyYmZmNDM3MjUyMTczY2Y1
YmUuLjRlNzhhNDhkNmQxOWViOWIwNmQzYzllZDA3NGU5NTgxMTJkMDhhN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMjQy
LDcgKzI0Miw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKICAgICAg
ICAgICAgIGNhY2hlZENhbGxlZS5zZXRXaXRob3V0V3JpdGVCYXJyaWVyKEpTQ2VsbDo6c2Vlbk11
bHRpcGxlQ2FsbGVlT2JqZWN0cygpKTsKIAogICAgICAgICBzaXplX3QgaW5saW5lQ2FwYWNpdHkg
PSBieXRlY29kZS5tX2lubGluZUNhcGFjaXR5OwotICAgICAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZSogYWxsb2NhdGlvblByb2ZpbGUgPSBjb25zdHJ1Y3Rvci0+ZW5zdXJlUmFyZURhdGFBbmRB
bGxvY2F0aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Q
cm9maWxlKCk7CisgICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSog
YWxsb2NhdGlvblByb2ZpbGUgPSBjb25zdHJ1Y3Rvci0+ZW5zdXJlUmFyZURhdGFBbmRBbGxvY2F0
aW9uUHJvZmlsZShleGVjLCBpbmxpbmVDYXBhY2l0eSktPm9iamVjdEFsbG9jYXRpb25Qcm9maWxl
KCk7CiAgICAgICAgIHRocm93U2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgp
OwogICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUp
OwpAQCAtMjcyLDE2ICsyNzIsMTcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3RoaXMp
CiAgICAgYXV0byYgbWV0YWRhdGEgPSBieXRlY29kZS5tZXRhZGF0YShleGVjKTsKICAgICBKU1Zh
bHVlIHYxID0gR0VUKGJ5dGVjb2RlLm1fc3JjRHN0KS5qc1ZhbHVlKCk7CiAgICAgaWYgKHYxLmlz
Q2VsbCgpKSB7Ci0gICAgICAgIFN0cnVjdHVyZSogbXlTdHJ1Y3R1cmUgPSB2MS5hc0NlbGwoKS0+
c3RydWN0dXJlKHZtKTsKLSAgICAgICAgU3RydWN0dXJlKiBvdGhlclN0cnVjdHVyZSA9IG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlLmdldCgpOwotICAgICAgICBpZiAobXlTdHJ1Y3R1cmUgIT0g
b3RoZXJTdHJ1Y3R1cmUpIHsKLSAgICAgICAgICAgIGlmIChvdGhlclN0cnVjdHVyZSkKKyAgICAg
ICAgU3RydWN0dXJlSUQgbXlTdHJ1Y3R1cmVJRCA9IHYxLmFzQ2VsbCgpLT5zdHJ1Y3R1cmVJRCgp
OworICAgICAgICBTdHJ1Y3R1cmVJRCBvdGhlclN0cnVjdHVyZUlEID0gbWV0YWRhdGEubV9jYWNo
ZWRTdHJ1Y3R1cmVJRDsKKyAgICAgICAgaWYgKG15U3RydWN0dXJlSUQgIT0gb3RoZXJTdHJ1Y3R1
cmVJRCkgeworICAgICAgICAgICAgaWYgKG90aGVyU3RydWN0dXJlSUQpCiAgICAgICAgICAgICAg
ICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBUb1RoaXNDb25mbGljdGVkOwotICAgICAgICAg
ICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuc2V0KHZtLCBleGVjLT5jb2RlQmxvY2soKSwg
bXlTdHJ1Y3R1cmUpOworICAgICAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9
IG15U3RydWN0dXJlSUQ7CisgICAgICAgICAgICB2bS5oZWFwLndyaXRlQmFycmllcihleGVjLT5j
b2RlQmxvY2soKSwgdm0uZ2V0U3RydWN0dXJlKG15U3RydWN0dXJlSUQpKTsKICAgICAgICAgfQog
ICAgIH0gZWxzZSB7CiAgICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0gVG9UaGlzQ29u
ZmxpY3RlZDsKLSAgICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICAgICAgbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRCA9IDA7CiAgICAgfQogICAgIC8vIE5v
dGU6IFdlIG9ubHkgbmVlZCB0byBkbyB0aGlzIHZhbHVlIHByb2ZpbGluZyBoZXJlIG9uIHRoZSBz
bG93IHBhdGguIFRoZSBmYXN0IHBhdGgKICAgICAvLyBqdXN0IHJldHVybnMgdGhlIGlucHV0IHRv
IHRvX3RoaXMgaWYgdGhlIHN0cnVjdHVyZSBjaGVjayBzdWNjZWVkcy4gSWYgdGhlIHN0cnVjdHVy
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJlRGF0YS5o
CmluZGV4IGE2YTZkZjAwZDQ1NDc4OTgwMTkwNGZmNWVlY2VhMjJiZGRjNzkyMWMuLjJlZGEzMmJh
Mzg1MzYxMGQwMWE5NDVhNmE0OWY1ZmE0MDRjM2IzNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJhcmVEYXRhLmgKQEAgLTY2LDcgKzY2LDcgQEAgY2xh
c3MgRnVuY3Rpb25SYXJlRGF0YSBmaW5hbCA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICByZXR1
cm4gT0JKRUNUX09GRlNFVE9GKEZ1bmN0aW9uUmFyZURhdGEsIG1fb2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUpOwogICAgIH0KIAotICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBvYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZSgpCisgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBl
KiBvYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpCiAgICAgewogICAgICAgICByZXR1cm4gJm1fb2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgfQpAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIEZ1
bmN0aW9uUmFyZURhdGEgZmluYWwgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAvLwogICAgIC8vIFdl
IGRvbid0IHJlYWxseSBjYXJlIGFib3V0IDEpIHNpbmNlIHRoaXMgbWVtb3J5IGlzIHJhcmUgYW5k
IHNtYWxsIGluIHRvdGFsLiAyKSBpcyB1bmZvcnR1bmF0ZSBidXQgaXMKICAgICAvLyBwcm9iYWJs
eSBvdXR3ZWlnaGVkIGJ5IHRoZSBjb3N0IG9mIDMpLgotICAgIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CisgICAgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGVXaXRoUHJvdG90eXBlIG1fb2JqZWN0QWxsb2NhdGlvblByb2ZpbGU7CiAgICAgSW5saW5lV2F0
Y2hwb2ludFNldCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludDsKICAgICBJbnRl
cm5hbEZ1bmN0aW9uQWxsb2NhdGlvblByb2ZpbGUgbV9pbnRlcm5hbEZ1bmN0aW9uQWxsb2NhdGlv
blByb2ZpbGU7CiAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9ib3VuZEZ1bmN0aW9uU3Ry
dWN0dXJlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJp
Zmllci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcApp
bmRleCBkNzczZDg1NWZmYzJlMDE1NDhlY2Y2ZGFhOGNkOGQ1NTU5MWM4Yzk2Li4wNWU0MDk5YjE2
NGM2YThhMWQ3MTM3NGNmZGM0NWI2MmQ4Mzg2MGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdG9vbHMvSGVhcFZlcmlmaWVyLmNwcApAQCAtMzMwLDcgKzMzMCw3IEBAIGJvb2wgSGVhcFZl
cmlmaWVyOjp2YWxpZGF0ZUpTQ2VsbChWTSogZXhwZWN0ZWRWTSwgSlNDZWxsKiBjZWxsLCBDZWxs
UHJvZmlsZSogcHJvCiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0ganNEeW5hbWljQ2Fz
dDxDb2RlQmxvY2sqPih2bSwgY2VsbCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShjb2RlQmxvY2sp
KSB7CiAgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwotICAgICAgICAgICAgY29kZUJs
b2NrLT5mb3JFYWNoVmFsdWVQcm9maWxlKFsmXShWYWx1ZVByb2ZpbGUmIHZhbHVlUHJvZmlsZSkg
eworICAgICAgICAgICAgY29kZUJsb2NrLT5mb3JFYWNoVmFsdWVQcm9maWxlKFsmXShWYWx1ZVBy
b2ZpbGUmIHZhbHVlUHJvZmlsZSwgYm9vbCkgewogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBWYWx1ZVByb2ZpbGU6OnRvdGFsTnVtYmVyT2ZCdWNrZXRzOyArK2kpIHsK
ICAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZSh2YWx1
ZVByb2ZpbGUubV9idWNrZXRzW2ldKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370149</attachid>
            <date>2019-05-17 14:09:12 -0700</date>
            <delta_ts>2019-05-21 07:43:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-197940-20190517140912.patch</filename>
            <type>text/plain</type>
            <size>79714</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ1NDMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ZmMyNWE4MGI4NWI0NjA3ZTgyMjE3ZDdlZTVlMzA2NGE4MWQyOTQwLi5mZTVlZDdlOGUwZWE5NmQ2
YzllZGNlNGVkY2RmZmEzZTVkOTFlN2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNTEgQEAKKzIwMTktMDUtMTcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBTaHJpbmsgTWV0YWRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Nzk0MAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGdldCBNZXRhZGF0YSByZWxhdGVkIGRhdGEg
aW4gR21haWwgYW5kIGl0IHR1cm5zIG91dCB0aGUgZm9sbG93aW5nIHRoaW5ncy4KKworICAgICAg
ICAxLiBBdCBwZWFrLCBNZXRhZGF0YVRhYmxlIGVhdHMgYSBsb3Qgb2YgYnl0ZXMgKDMwIE1CIC0g
NTAgTUIsIHNvbWV0aW1lcyA3MCBNQiB3aGlsZSB0b3RhbCBHbWFpbCBmb290cHJpbnQgaXMgNDAw
IC0gNTAwIE1CKS4KKyAgICAgICAgMi4gQWZ0ZXIgZnVsbCBHQyBoYXBwZW5zLCBtb3N0IG9mIE1l
dGFkYXRhIGlzIGRlc3Ryb3llZCB3aGlsZSBzb21lIGFyZSBrZXB0LiBTdGlsbCBrZWVwcyAxIE1C
LiBCdXQgYWZ0ZXIgdGhlIEdDLCAjIG9mIE1ldGFkYXRhVGFibGUgZXZlbnR1YWxseSBncm93cyBh
Z2Fpbi4KKworICAgICAgICBJZiB3ZSBzaHJpbmsgTWV0YWRhdGEsIHdlIGNhbiBnZXQgcGVhayBt
ZW1vcnkgZm9vdHByaW50IGluIEdtYWlsLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYXR0ZW1wdHMg
dG8gc2hyaW5rIE1ldGFkYXRhLiBUaGlzIHBhdGNoIGZpcnN0IGZvY3VzIG9uIGxvdyBoYW5naW5n
IGZydWl0czogaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgY2hhbmdlIHJlbW92aW5nIE9TUiBleGl0
IEpTVmFsdWUgaW4gVmFsdWVQcm9maWxlLgorICAgICAgICBUaGlzIHBhdGNoIHVzZXMgZmFuY3kg
Yml0IGp1Z2dsaW5nICYgbGV2ZXJhZ2VzIG5pY2UgZGF0YSB0eXBlcyB0byByZWR1Y2UgTWV0YWRh
dGEsIGFzIGZvbGxvd3MuCisKKyAgICAgICAgMS4gVmFsdWVQcm9maWxlIGlzIHJlZHVjZWQgZnJv
bSAzMiB0byAyNC4gSXQgcmVkdWNlcyBNZXRhZGF0YSB1c2luZyBWYWx1ZVByb2ZpbGUuCisgICAg
ICAgIDIuIEFycmF5UHJvZmlsZSBpcyByZWR1Y2VkIGZyb20gMTYgdG8gMTIuIERpdHRvLgorICAg
ICAgICAzLiBPcENhbGw6Ok1ldGFkYXRhIGlzIHJlZHVjZWQgZnJvbSA4OCB0byA2NC4KKyAgICAg
ICAgNC4gT3BHZXRCeUlkOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNTYgdG8gNDAuCisgICAg
ICAgIDUuIE9wVG9UaGlzOjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gNDggdG8gMzIuCisgICAg
ICAgIDYuIE9wTmV3T2JqZWN0OjpNZXRhZGF0YSBpcyByZWR1Y2VkIGZyb20gMzIgdG8gMTYuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBnYXRoZXJlZCBkYXRhLCBpdCBzaG91bGQgcmVkdWNl
IDEtMk1CIGluIHN0ZWFkeSBzdGF0ZSBpbiBHbWFpbCwgbXVjaCBtb3JlIGluIHBlYWsgbWVtb3J5
LCB+MSBNQiBpbiB0aGUgc3RhdGUganVzdCBhZnRlciBmdWxsIEdDLgorICAgICAgICBJdCBhbHNv
IGltcHJvdmVzIFJBTWlmaWNhdGlvbiBieSAwLjMlICg2IHJ1bnMpLgorCisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9BcnJheVByb2ZpbGUu
aDoKKyAgICAgICAgKEpTQzo6QXJyYXlQcm9maWxlOjpBcnJheVByb2ZpbGUpOgorICAgICAgICAo
SlNDOjpBcnJheVByb2ZpbGU6OmJ5dGVjb2RlT2Zmc2V0IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKEpTQzo6QXJyYXlQcm9maWxlOjppc1ZhbGlkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9CeXRlY29kZUxpc3QucmI6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTElu
dCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxp
emVMTEludElubGluZUNhY2hlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Z2V0QXJyYXlQ
cm9maWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1cGRhdGVBbGxQcmVkaWN0aW9uc0Fu
ZENvdW50TGl2ZW5lc3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2Zp
bGVzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp2YWx1ZVByb2ZpbGVGb3JBcmd1bWVudCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hWYWx1ZVBy
b2ZpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZvckVhY2hBcnJheVByb2ZpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oOgorICAgICAgICBXZSB1c2UgUHJv
dG9Mb2FkJ3MgSlNPYmplY3QncyBoaWdoIGJpdHMgdG8gZW1iZWQgaGl0Q291bnRGb3JMTEludENh
Y2hpbmcgYW5kIG1vZGUsIHNpbmNlIHRoZXkKKyAgICAgICAgYXJlIGFsd2F5cyB6ZXJvIGZvciBQ
cm90b0xvYWQgbW9kZS4KKworICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDoKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6TExJbnRDYWxsTGlua0luZm86OmxpbmspOgorICAgICAgICAoSlNDOjpMTEludENhbGxM
aW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpsYXN0U2VlbkNhbGxl
ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpjbGVhckxhc3RTZWVu
Q2FsbGVlKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJ
bmZvKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgSW4gTExJbnRDYWxsTGlua0luZm8sIHdlIGFsd2F5cyBzZXQg
dGhlIHNhbWUgdmFsdWUgdG8gbGFzdFNlZW5DYWxsZWUgYW5kIGNhbGxlZS4gQnV0IGxhdGVyLCBj
YWxsZWUgY2FuIGJlIGNsZWFyZWQuCisgICAgICAgIEl0IG1lYW5zIHRoYXQgd2UgY2FuIHJlcHJl
c2VudCB0aGVtIGluIG9uZSB2YWx1ZSArIGNsZWFyZWQgZmxhZy4gV2UgZW5jb2RlIHRoaXMgZmxh
ZyBpbnRvIHRoZSBsb3dlc3QgYml0IG9mIHRoZSBjYWxsZWUgY2VsbCBzbworICAgICAgICB0aGF0
IHdlIGNhbiBtYWtlIHRoZW0gb25lIHBvaW50ZXIuIFdlIGFsc28gdXNlIFBhY2tlZFJhd1NlbnRp
bmVsTm9kZSB0byBnZXQgc29tZSBzcGFjZSwgYW5kIGVtYmVkIEFycmF5UHJvZmlsZSBpbnRvIHRo
aXMgc3BhY2UKKyAgICAgICAgdG8gZ2V0IGZ1cnRoZXIgbWVtb3J5IHJlZHVjdGlvbi4KKworICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hw
b2ludC5jcHA6CisgICAgICAgIChKU0M6OkxMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0
dXJlV2F0Y2hwb2ludDo6Y2xlYXJMTEludEdldEJ5SWRDYWNoZSk6CisgICAgICAgICogYnl0ZWNv
ZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6TGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGU6OkxhenlPcGVyYW5kVmFsdWVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6TGF6
eU9wZXJhbmRWYWx1ZVByb2ZpbGU6OmtleSBjb25zdCk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oOgorICAgICAgICAoSlNDOjpNZXRhZGF0YVRhYmxlOjpidWZmZXIpOgorICAg
ICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlLmg6CisgICAgICAgIChKU0M6
Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6b2Zmc2V0T2ZBbGxvY2F0b3IpOgorICAgICAg
ICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U6Om9mZnNldE9mU3RydWN0dXJlKToK
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlOjpjbGVhcik6CisgICAg
ICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTo6dmlzaXRBZ2dyZWdhdGUpOgor
ICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6c2V0UHJvdG90eXBlKToKKyAg
ICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpwcm90b3R5
cGUpOgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6
OmNsZWFyKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90
eXBlOjp2aXNpdEFnZ3JlZ2F0ZSk6CisgICAgICAgIChKU0M6Ok9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlV2l0aFByb3RvdHlwZTo6c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxs
b2NhdGlvblByb2ZpbGU6Om9mZnNldE9mQWxsb2NhdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mU3RydWN0dXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6Om9mZnNldE9mSW5saW5lQ2Fw
YWNpdHkpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZTo6aXNOdWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6T2JqZWN0
QWxsb2NhdGlvblByb2ZpbGU6OnN0cnVjdHVyZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok9i
amVjdEFsbG9jYXRpb25Qcm9maWxlOjpwcm90b3R5cGUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6aW5saW5lQ2FwYWNpdHkpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6Y2xlYXIpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6dmlzaXRBZ2dyZWdhdGUpOiBEZWxl
dGVkLgorICAgICAgICAqIGJ5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46Omlu
aXRpYWxpemVQcm9maWxlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVC
YXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9wZXJ0eUNvdW50KToKKyAgICAgICAgKEpT
Qzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OmluaXRpYWxpemVQcm9maWxlKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6T2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6OnBvc3NpYmxlRGVmYXVsdFBy
b3BlcnR5Q291bnQpOiBEZWxldGVkLgorICAgICAgICBPcE5ld09iamVjdCdzIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlIGRvZXMgbm90IG5lZWQgdG8gaG9sZCBwcm90b3R5cGUuIFNvIHdlIGhhdmUg
dHdvIHZlcnNpb25zIG5vdywgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgYW5kIE9iamVjdEFsbG9j
YXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZQorICAgICAgICB0byBjdXQgb25lIHBvaW50ZXIuIFdl
IGFsc28gcmVtb3ZlIGlubGluZSBjYXBhY2l0eSBzaW5jZSB0aGlzIGNhbiBiZSByZXRyaWV2ZWQg
ZnJvbSBTdHJ1Y3R1cmUuCisKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KiBieXRlY29kZS9WYWx1ZVByb2ZpbGUuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6VmFsdWVQcm9maWxlQmFzZSk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OnRv
dGFsTnVtYmVyT2ZTYW1wbGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6aXNTYW1wbGVkQmVmb3JlIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFsdWVQcm9maWxlQmFz
ZTo6ZHVtcCk6CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6Ok1pbmltYWxWYWx1ZVByb2ZpbGU6Ok1pbmltYWxW
YWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZC
dWNrZXRzOjpWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzKToKKyAgICAgICAgKEpT
Qzo6VmFsdWVQcm9maWxlOjpWYWx1ZVByb2ZpbGUpOgorICAgICAgICAoSlNDOjpnZXRWYWx1ZVBy
b2ZpbGVCeXRlY29kZU9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgIEJ5dGVjb2RlIG9mZnNldCBp
cyBubyBsb25nZXIgdXNlZC4gQW5kIHNhbXBsZSBjb3VudCBpcyBub3QgdXNlZCBlZmZlY3RpdmVs
eS4KKworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ3JlYXRlVGhpcyk6CisgICAgICAg
ICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBqaXQvSklUQ2Fs
bC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6Y29tcGlsZVNldHVwRnJhbWUpOgorICAgICAgICAq
IGppdC9KSVRDYWxsMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmNvbXBpbGVTZXR1cEZy
YW1lKToKKyAgICAgICAgKiBqaXQvSklUT3Bjb2Rlcy5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6
ZW1pdF9vcF9jYXRjaCk6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90b190aGlzKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKiBqaXQvSklU
T3Bjb2RlczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NhdGNoKToKKyAg
ICAgICAgKEpTQzo6SklUOjplbWl0X29wX2NyZWF0ZV90aGlzKToKKyAgICAgICAgKEpTQzo6SklU
OjplbWl0X29wX3RvX3RoaXMpOgorICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAg
ICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVt
aXRfb3BfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZSk6CisgICAgICAg
IChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpzZXRVcENhbGwpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIzMl82NC5h
c206CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjY0LmFzbToKKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFUSF9E
RUNMKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaDoKKyAgICAgICAgKiB0
b29scy9IZWFwVmVyaWZpZXIuY3BwOgorICAgICAgICAoSlNDOjpIZWFwVmVyaWZpZXI6OnZhbGlk
YXRlSlNDZWxsKToKKwogMjAxOS0wNS0xNiAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFw
cGxlLmNvbT4KIAogICAgICAgICBXYXNtIHNob3VsZCBjYWdlIHRoZSBtZW1vcnkgYmFzZSBwb2lu
dGVycyBpbiBzdHJ1Y3RzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQXJyYXlQcm9maWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuY3BwCmluZGV4IGMwMGFlZjIxYjZlYmI2MTllOTFjNzQ2YWY0ZmIwOWM1ODRmZDY2
YmIuLjNlMTUwYTAxMjM5NmIxMjgyNDUyOGE1ZTlmMmI5ODM3ZThjN2RlN2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJheVByb2ZpbGUuY3BwCkBAIC0zMywxMCAr
MzMsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLWNvbnN0
IGNoYXIqIGNvbnN0IEFycmF5UHJvZmlsZTo6c190eXBlTmFtZSA9ICJBcnJheVByb2ZpbGUiOwot
I2VuZGlmCi0KIC8vIEtlZXAgaW4gc3luYyB3aXRoIHRoZSBvcmRlciBvZiBUeXBlZEFycmF5VHlw
ZS4KIGNvbnN0IEFycmF5TW9kZXMgdHlwZWRBcnJheU1vZGVzW051bWJlck9mVHlwZWRBcnJheVR5
cGVzRXhjbHVkaW5nRGF0YVZpZXddID0gewogICAgIEludDhBcnJheU1vZGUsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKaW5kZXggYmZlMzhlM2Y1NTY0
MmE1NDBkOTg1MmVmZWM3OTBhZGU4ODlkMGMzOS4uZmIzNDhiOTJkZDI2MjNjMDY1MWVmZDJlNGE4
YzBlOGRlMjM3YjIwMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0FycmF5UHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9BcnJh
eVByb2ZpbGUuaApAQCAtMjcsNyArMjcsNiBAQAogCiAjaW5jbHVkZSAiQ29uY3VycmVudEpTTG9j
ay5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgotI2luY2x1ZGUgPHd0Zi9TZWdtZW50ZWRWZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTE5NCwyMSArMTkzLDEzIEBAIGNsYXNzIEFy
cmF5UHJvZmlsZSB7CiAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogcHVibGljOgotICAg
IEFycmF5UHJvZmlsZSgpCi0gICAgICAgIDogQXJyYXlQcm9maWxlKHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEFy
cmF5UHJvZmlsZSh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKLSAgICAgICAgOiBtX2J5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KQotICAgICAgICAsIG1fbWF5SW50ZXJjZXB0SW5kZXhlZEFj
Y2Vzc2VzKGZhbHNlKQorICAgIGV4cGxpY2l0IEFycmF5UHJvZmlsZSgpCisgICAgICAgIDogbV9t
YXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoZmFsc2UpCiAgICAgICAgICwgbV91c2VzT3JpZ2lu
YWxBcnJheVN0cnVjdHVyZXModHJ1ZSkKICAgICAgICAgLCBtX2RpZFBlcmZvcm1GaXJzdFJ1blBy
dW5pbmcoZmFsc2UpCiAgICAgewogICAgIH0KICAgICAKLSAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNvZGVPZmZzZXQ7IH0KLSAgICAKICAgICBTdHJ1
Y3R1cmVJRCogYWRkcmVzc09mTGFzdFNlZW5TdHJ1Y3R1cmVJRCgpIHsgcmV0dXJuICZtX2xhc3RT
ZWVuU3RydWN0dXJlSUQ7IH0KICAgICBBcnJheU1vZGVzKiBhZGRyZXNzT2ZBcnJheU1vZGVzKCkg
eyByZXR1cm4gJm1fb2JzZXJ2ZWRBcnJheU1vZGVzOyB9CiAgICAgYm9vbCogYWRkcmVzc09mTWF5
U3RvcmVUb0hvbGUoKSB7IHJldHVybiAmbV9tYXlTdG9yZVRvSG9sZTsgfQpAQCAtMjM4LDE2ICsy
MjksMTEgQEAgY2xhc3MgQXJyYXlQcm9maWxlIHsKICAgICBDU3RyaW5nIGJyaWVmRGVzY3JpcHRp
b24oY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29kZUJsb2NrKik7CiAgICAgQ1N0cmluZyBi
cmllZkRlc2NyaXB0aW9uV2l0aG91dFVwZGF0aW5nKGNvbnN0IENvbmN1cnJlbnRKU0xvY2tlciYp
OwogICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBpbmxpbmUgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlTmFtZSA9PSBzX3R5cGVOYW1lOyB9Ci0jZW5kaWYKLQogcHJp
dmF0ZToKICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIAogICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIHBvbHltb3JwaGljU3RydWN0dXJlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8U3RydWN0dXJlKj4ocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oMSkpOyB9CiAgICAgCi0g
ICAgdW5zaWduZWQgbV9ieXRlY29kZU9mZnNldDsKICAgICBTdHJ1Y3R1cmVJRCBtX2xhc3RTZWVu
U3RydWN0dXJlSUQgeyAwIH07CiAgICAgYm9vbCBtX21heVN0b3JlVG9Ib2xlIHsgZmFsc2UgfTsg
Ly8gVGhpcyBmbGFnIG1heSBiZWNvbWUgb3ZlcmxvYWRlZCB0byBpbmRpY2F0ZSBvdGhlciBzcGVj
aWFsIGNhc2VzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgYXJyYXkgYWNjZXNzLCBhcyBp
dCBkZXBlbmRzIG9uIGluZGV4aW5nIHR5cGUuIFNpbmNlIHdlIGN1cnJlbnRseSBoYXZlIGJhc2lj
YWxseSBqdXN0IG9uZSBpbmRleGluZyB0eXBlICh0d28gdmFyaWFudHMgb2YgQXJyYXlTdG9yYWdl
KSwgdGhpcyBmbGFnIGZvciBub3cganVzdCBtZWFucyBleGFjdGx5IHdoYXQgaXRzIG5hbWUgaW1w
bGllcy4KICAgICBib29sIG1fb3V0T2ZCb3VuZHMgeyBmYWxzZSB9OwpAQCAtMjU1LDEzICsyNDEs
NyBAQCBjbGFzcyBBcnJheVByb2ZpbGUgewogICAgIGJvb2wgbV91c2VzT3JpZ2luYWxBcnJheVN0
cnVjdHVyZXMgOiAxOwogICAgIGJvb2wgbV9kaWRQZXJmb3JtRmlyc3RSdW5QcnVuaW5nIDogMTsK
ICAgICBBcnJheU1vZGVzIG1fb2JzZXJ2ZWRBcnJheU1vZGVzIHsgMCB9OwotCi0jaWYgIUFTU0VS
VF9ESVNBQkxFRAotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBzX3R5cGVOYW1lOwotICAg
IGNvbnN0IGNoYXIqIG1fdHlwZU5hbWUgeyBzX3R5cGVOYW1lIH07Ci0jZW5kaWYKIH07Ci0KLXR5
cGVkZWYgU2VnbWVudGVkVmVjdG9yPEFycmF5UHJvZmlsZSwgND4gQXJyYXlQcm9maWxlVmVjdG9y
Oworc3RhdGljX2Fzc2VydChzaXplb2YoQXJyYXlQcm9maWxlKSA9PSAxMik7CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5yYiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxp
c3QucmIKaW5kZXggMDY5NWEyNTA3YjYyMzk3NjQ5YTg3OTg5NjE2NzU1YzA5MzkzNzdhYi4uY2Rl
ZTU2OWM4ZDAyMGIwZDc5M2NlODRhZTg4YWM1ZGJlMWI1MTkxZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlTGlzdC5yYgorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVMaXN0LnJiCkBAIC0xMzYsNyArMTM2LDcgQEAK
ICAgICAgICAgc3JjRHN0OiBWaXJ0dWFsUmVnaXN0ZXIsCiAgICAgfSwKICAgICBtZXRhZGF0YTog
ewotICAgICAgICBjYWNoZWRTdHJ1Y3R1cmU6IFdyaXRlQmFycmllckJhc2VbU3RydWN0dXJlXSwK
KyAgICAgICAgY2FjaGVkU3RydWN0dXJlSUQ6IFN0cnVjdHVyZUlELAogICAgICAgICB0b1RoaXNT
dGF0dXM6IFRvVGhpc1N0YXR1cywKICAgICAgICAgcHJvZmlsZTogVmFsdWVQcm9maWxlLAogICAg
IH0KQEAgLTQxNCw4ICs0MTQsNiBAQAogICAgICAgICBwcm9wZXJ0eTogdW5zaWduZWQsCiAgICAg
fSwKICAgICBtZXRhZGF0YTogewotICAgICAgICBtb2RlOiBHZXRCeUlkTW9kZSwKLSAgICAgICAg
aGl0Q291bnRGb3JMTEludENhY2hpbmc6IHVuc2lnbmVkLAogICAgICAgICBtb2RlTWV0YWRhdGE6
IEdldEJ5SWRNb2RlTWV0YWRhdGEsCiAgICAgICAgIHByb2ZpbGU6IFZhbHVlUHJvZmlsZSwKICAg
ICB9CkBAIC03MDYsNyArNzA0LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAg
IGNhbGxMaW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTog
QXJyYXlQcm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBA
IC03MTksNyArNzE2LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxM
aW5rSW5mbzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQ
cm9maWxlLAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03MzIs
NyArNzI4LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5m
bzogTExJbnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxl
LAogICAgICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCkBAIC03ODcsNyArNzgy
LDYgQEAKICAgICB9LAogICAgIG1ldGFkYXRhOiB7CiAgICAgICAgIGNhbGxMaW5rSW5mbzogTExJ
bnRDYWxsTGlua0luZm8sCi0gICAgICAgIGFycmF5UHJvZmlsZTogQXJyYXlQcm9maWxlLAogICAg
ICAgICBwcm9maWxlOiBWYWx1ZVByb2ZpbGUsCiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAppbmRleCA5M2UzM2RhYzA5MGFl
NzI0NGJhOTA2ZTliM2Y1MzI5NmIwZmNjNDJjLi4zYjdlMTkzYjA3ZmIyODg1YjkxZTI1N2Q2OTMz
NTcwNWE2NTZlMGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgQ2FsbExpbmtTdGF0dXMgQ2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgQ29k
ZUIKICAgICB9CiAgICAgCiAgICAgCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCkpOworICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhj
YWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlKCkpOwogfQogCiBDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZvcigKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKaW5kZXggYmM5ZWQxMjlkZWYzMWEzN2Q0Zjc4NDUxYzNhMTY3YTcxYjhk
ZWUwOS4uYmFlNTg5MTE5NDA3MTY0MmNkMzRjY2MyZTYxMDExZDNlYTM1OGE2MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTQ4MiwxMyArNDgy
LDggQEAgYm9vbCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0
YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAvLyBCb29ra2VlcCB0aGUgc3Ryb25n
bHkgcmVmZXJlbmNlZCBtb2R1bGUgZW52aXJvbm1lbnRzLgogICAgIEhhc2hTZXQ8SlNNb2R1bGVF
bnZpcm9ubWVudCo+IHN0cm9uZ2x5UmVmZXJlbmNlZE1vZHVsZUVudmlyb25tZW50czsKIAotICAg
IGF1dG8gbGlua19wcm9maWxlID0gWyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8q
Ynl0ZWNvZGUqLywgYXV0byYgbWV0YWRhdGEpIHsKKyAgICBhdXRvIGxpbmtfcHJvZmlsZSA9IFsm
XShjb25zdCBhdXRvJiAvKmluc3RydWN0aW9uKi8sIGF1dG8gLypieXRlY29kZSovLCBhdXRvJiAv
Km1ldGFkYXRhKi8pIHsKICAgICAgICAgbV9udW1iZXJPZk5vbkFyZ3VtZW50VmFsdWVQcm9maWxl
cysrOwotICAgICAgICBtZXRhZGF0YS5tX3Byb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9IGluc3Ry
dWN0aW9uLm9mZnNldCgpOwotICAgIH07Ci0KLSAgICBhdXRvIGxpbmtfYXJyYXlQcm9maWxlID0g
WyZdKGNvbnN0IGF1dG8mIGluc3RydWN0aW9uLCBhdXRvIC8qYnl0ZWNvZGUqLywgYXV0byYgbWV0
YWRhdGEpIHsKLSAgICAgICAgbWV0YWRhdGEubV9hcnJheVByb2ZpbGUubV9ieXRlY29kZU9mZnNl
dCA9IGluc3RydWN0aW9uLm9mZnNldCgpOwogICAgIH07CiAKICAgICBhdXRvIGxpbmtfb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUgPSBbJl0oY29uc3QgYXV0byYgLyppbnN0cnVjdGlvbiovLCBhdXRv
IGJ5dGVjb2RlLCBhdXRvJiBtZXRhZGF0YSkgewpAQCAtNDk5LDEwICs0OTQsNiBAQCBib29sIENv
ZGVCbG9jazo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4
ZWN1dGFibGUsIFVubGluawogICAgICAgICBtZXRhZGF0YS5tX2FycmF5QWxsb2NhdGlvblByb2Zp
bGUuaW5pdGlhbGl6ZUluZGV4aW5nTW9kZShieXRlY29kZS5tX3JlY29tbWVuZGVkSW5kZXhpbmdU
eXBlKTsKICAgICB9OwogCi0gICAgYXV0byBsaW5rX2hpdENvdW50Rm9yTExJbnRDYWNoaW5nID0g
WyZdKGNvbnN0IGF1dG8mIC8qaW5zdHJ1Y3Rpb24qLywgYXV0byAvKmJ5dGVjb2RlKi8sIGF1dG8m
IG1ldGFkYXRhKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1faGl0Q291bnRGb3JMTEludENhY2hpbmcg
PSBPcHRpb25zOjpwcm90b3R5cGVIaXRDb3VudEZvckxMSW50Q2FjaGluZygpOwotICAgIH07Ci0K
ICNkZWZpbmUgTElOS19GSUVMRChfX2ZpZWxkKSBcCiAgICAgV1RGX0xBWllfSk9JTihsaW5rXywg
X19maWVsZCkoaW5zdHJ1Y3Rpb24sIGJ5dGVjb2RlLCBtZXRhZGF0YSk7CiAKQEAgLTUyNywxMyAr
NTE4LDEzIEBAIGJvb2wgQ29kZUJsb2NrOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFNjcmlwdEV4
ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rCiAgICAgICAgIE9wY29kZUlEIG9wY29k
ZUlEID0gaW5zdHJ1Y3Rpb24tPm9wY29kZUlEKCk7CiAgICAgICAgIG1fYnl0ZWNvZGVDb3N0ICs9
IG9wY29kZUxlbmd0aHNbb3Bjb2RlSURdOwogICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7Ci0g
ICAgICAgIExJTksoT3BIYXNJbmRleGVkUHJvcGVydHksIGFycmF5UHJvZmlsZSkKKyAgICAgICAg
TElOSyhPcEhhc0luZGV4ZWRQcm9wZXJ0eSkKIAotICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3Ms
IGFycmF5UHJvZmlsZSwgcHJvZmlsZSkKLSAgICAgICAgTElOSyhPcFRhaWxDYWxsVmFyYXJncywg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQotICAgICAgICBMSU5LKE9wVGFpbENhbGxGb3J3YXJkQXJn
dW1lbnRzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BDb25zdHJ1Y3RW
YXJhcmdzLCBhcnJheVByb2ZpbGUsIHByb2ZpbGUpCi0gICAgICAgIExJTksoT3BHZXRCeVZhbCwg
YXJyYXlQcm9maWxlLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbFZhcmFyZ3MsIHByb2Zp
bGUpCisgICAgICAgIExJTksoT3BUYWlsQ2FsbFZhcmFyZ3MsIHByb2ZpbGUpCisgICAgICAgIExJ
TksoT3BUYWlsQ2FsbEZvcndhcmRBcmd1bWVudHMsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BD
b25zdHJ1Y3RWYXJhcmdzLCBwcm9maWxlKQorICAgICAgICBMSU5LKE9wR2V0QnlWYWwsIHByb2Zp
bGUpCiAKICAgICAgICAgTElOSyhPcEdldERpcmVjdFBuYW1lLCBwcm9maWxlKQogICAgICAgICBM
SU5LKE9wR2V0QnlJZFdpdGhUaGlzLCBwcm9maWxlKQpAQCAtNTUwLDE2ICs1NDEsMTYgQEAgYm9v
bCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgU2NyaXB0RXhlY3V0YWJsZSogb3du
ZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgTElOSyhPcEJpdG5vdCwgcHJvZmlsZSkKICAg
ICAgICAgTElOSyhPcEJpdHhvciwgcHJvZmlsZSkKIAotICAgICAgICBMSU5LKE9wR2V0QnlJZCwg
cHJvZmlsZSwgaGl0Q291bnRGb3JMTEludENhY2hpbmcpCisgICAgICAgIExJTksoT3BHZXRCeUlk
LCBwcm9maWxlKQogCi0gICAgICAgIExJTksoT3BDYWxsLCBwcm9maWxlLCBhcnJheVByb2ZpbGUp
Ci0gICAgICAgIExJTksoT3BUYWlsQ2FsbCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQotICAgICAg
ICBMSU5LKE9wQ2FsbEV2YWwsIHByb2ZpbGUsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cENvbnN0cnVjdCwgcHJvZmlsZSwgYXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wQ2FsbCwg
cHJvZmlsZSkKKyAgICAgICAgTElOSyhPcFRhaWxDYWxsLCBwcm9maWxlKQorICAgICAgICBMSU5L
KE9wQ2FsbEV2YWwsIHByb2ZpbGUpCisgICAgICAgIExJTksoT3BDb25zdHJ1Y3QsIHByb2ZpbGUp
CiAKLSAgICAgICAgTElOSyhPcEluQnlWYWwsIGFycmF5UHJvZmlsZSkKLSAgICAgICAgTElOSyhP
cFB1dEJ5VmFsLCBhcnJheVByb2ZpbGUpCi0gICAgICAgIExJTksoT3BQdXRCeVZhbERpcmVjdCwg
YXJyYXlQcm9maWxlKQorICAgICAgICBMSU5LKE9wSW5CeVZhbCkKKyAgICAgICAgTElOSyhPcFB1
dEJ5VmFsKQorICAgICAgICBMSU5LKE9wUHV0QnlWYWxEaXJlY3QpCiAKICAgICAgICAgTElOSyhP
cE5ld0FycmF5KQogICAgICAgICBMSU5LKE9wTmV3QXJyYXlXaXRoU2l6ZSkKQEAgLTEyMDgsNyAr
MTE5OSw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZUxMSW50SW5saW5lQ2FjaGVzKCkKICAg
ICAgICAgc3dpdGNoIChjdXJJbnN0cnVjdGlvbi0+b3Bjb2RlSUQoKSkgewogICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDogewogICAgICAgICAgICAgYXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVj
dGlvbi0+YXM8T3BHZXRCeUlkPigpLm1ldGFkYXRhKHRoaXMpOwotICAgICAgICAgICAgaWYgKG1l
dGFkYXRhLm1fbW9kZSAhPSBHZXRCeUlkTW9kZTo6RGVmYXVsdCkKKyAgICAgICAgICAgIGlmICht
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdldEJ5SWRNb2RlOjpEZWZhdWx0KQogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgb2xkU3RydWN0dXJl
SUQgPSBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAg
ICAgICAgICAgIGlmICghb2xkU3RydWN0dXJlSUQgfHwgdm0uaGVhcC5pc01hcmtlZCh2bS5oZWFw
LnN0cnVjdHVyZUlEVGFibGUoKS5nZXQob2xkU3RydWN0dXJlSUQpKSkKQEAgLTEyNTIsMTEgKzEy
NDMsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ugb3BfdG9fdGhpczogewogICAgICAgICAgICAg
YXV0byYgbWV0YWRhdGEgPSBjdXJJbnN0cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEo
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoIW1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlIHx8IHZt
LmhlYXAuaXNNYXJrZWQobWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgaWYgKCFtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEIHx8IHZtLmhlYXAuaXNNYXJr
ZWQodm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQpKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGlmIChPcHRpb25z
Ojp2ZXJib3NlT1NSKCkpCi0gICAgICAgICAgICAgICAgZGF0YUxvZ0YoIkNsZWFyaW5nIExMSW50
IHRvX3RoaXMgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVy
ZS5nZXQoKSk7Ci0gICAgICAgICAgICBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkgeworICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gdm0uaGVhcC5zdHJ1Y3R1cmVJRFRhYmxlKCkuZ2V0
KG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQpOworICAgICAgICAgICAgICAgIGRhdGFMb2dG
KCJDbGVhcmluZyBMTEludCB0b190aGlzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
SUQgPSAwOwogICAgICAgICAgICAgbWV0YWRhdGEubV90b1RoaXNTdGF0dXMgPSBtZXJnZShtZXRh
ZGF0YS5tX3RvVGhpc1N0YXR1cywgVG9UaGlzQ2xlYXJlZEJ5R0MpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KQEAgLTEzMjQsMTMgKzEzMTcsMTMgQEAgdm9pZCBDb2RlQmxvY2s6OmZp
bmFsaXplTExJbnRJbmxpbmVDYWNoZXMoKQogICAgIH0pOwogCiAgICAgZm9yRWFjaExMSW50Q2Fs
bExpbmtJbmZvKFsmXShMTEludENhbGxMaW5rSW5mbyYgY2FsbExpbmtJbmZvKSB7Ci0gICAgICAg
IGlmIChjYWxsTGlua0luZm8uaXNMaW5rZWQoKSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlu
a0luZm8uY2FsbGVlLmdldCgpKSkgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLmlzTGlua2Vk
KCkgJiYgIXZtLmhlYXAuaXNNYXJrZWQoY2FsbExpbmtJbmZvLmNhbGxlZSgpKSkgewogICAgICAg
ICAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSkKICAgICAgICAgICAgICAgICBkYXRhTG9n
KCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gIiwgKnRoaXMsICJcbiIpOwogICAgICAgICAgICAg
Y2FsbExpbmtJbmZvLnVubGluaygpOwogICAgICAgICB9Ci0gICAgICAgIGlmICghIWNhbGxMaW5r
SW5mby5sYXN0U2VlbkNhbGxlZSAmJiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFz
dFNlZW5DYWxsZWUuZ2V0KCkpKQotICAgICAgICAgICAgY2FsbExpbmtJbmZvLmxhc3RTZWVuQ2Fs
bGVlLmNsZWFyKCk7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSAm
JiAhdm0uaGVhcC5pc01hcmtlZChjYWxsTGlua0luZm8ubGFzdFNlZW5DYWxsZWUoKSkpCisgICAg
ICAgICAgICBjYWxsTGlua0luZm8uY2xlYXJMYXN0U2VlbkNhbGxlZSgpOwogICAgIH0pOwogfQog
CkBAIC0yNTc1LDE3ICsyNTY4LDI0IEBAIEFycmF5UHJvZmlsZSogQ29kZUJsb2NrOjpnZXRBcnJh
eVByb2ZpbGUoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJiwgdW5zaWduZWQgYnl0CiB7CiAgICAg
YXV0byBpbnN0cnVjdGlvbiA9IGluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlT2Zmc2V0KTsKICAg
ICBzd2l0Y2ggKGluc3RydWN0aW9uLT5vcGNvZGVJRCgpKSB7Ci0jZGVmaW5lIENBU0UoT3ApIFwK
KyNkZWZpbmUgQ0FTRTEoT3ApIFwKICAgICBjYXNlIE9wOjpvcGNvZGVJRDogXAogICAgICAgICBy
ZXR1cm4gJmluc3RydWN0aW9uLT5hczxPcD4oKS5tZXRhZGF0YSh0aGlzKS5tX2FycmF5UHJvZmls
ZTsKIAotICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoQ0FTRSkKLSN1bmRl
ZiBDQVNFCisjZGVmaW5lIENBU0UyKE9wKSBcCisgICAgY2FzZSBPcDo6b3Bjb2RlSUQ6IFwKKyAg
ICAgICAgcmV0dXJuICZpbnN0cnVjdGlvbi0+YXM8T3A+KCkubWV0YWRhdGEodGhpcykubV9jYWxs
TGlua0luZm8ubV9hcnJheVByb2ZpbGU7CisKKyAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9BUlJB
WV9QUk9GSUxFKENBU0UxKQorICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0xMSU5UX0NBTExfTElO
S19JTkZPKENBU0UyKQorCisjdW5kZWYgQ0FTRTEKKyN1bmRlZiBDQVNFMgogCiAgICAgY2FzZSBP
cEdldEJ5SWQ6Om9wY29kZUlEOiB7CiAgICAgICAgIGF1dG8gYnl0ZWNvZGUgPSBpbnN0cnVjdGlv
bi0+YXM8T3BHZXRCeUlkPigpOwogICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKHRoaXMpOwotICAgICAgICBpZiAobWV0YWRhdGEubV9tb2RlID09IEdldEJ5SWRNb2Rl
OjpBcnJheUxlbmd0aCkKKyAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuICZtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlOwogICAgICAgICBi
cmVhazsKICAgICB9CkBAIC0yNjMzLDE2ICsyNjMzLDE3IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRh
dGVBbGxQcmVkaWN0aW9uc0FuZENvdW50TGl2ZW5lc3ModW5zaWduZWQmIG51bWJlck9mTGl2ZU5v
bkFyCiAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1lbnRWYWx1ZVByb2ZpbGVzID0gMDsKICAgICBu
dW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzID0gMDsgLy8gSWYgdGhpcyBkaXZpZGVkIGJ5IFZhbHVl
UHJvZmlsZTo6bnVtYmVyT2ZCdWNrZXRzIGVxdWFscyBudW1iZXJPZlZhbHVlUHJvZmlsZXMoKSB0
aGVuIHZhbHVlIHByb2ZpbGVzIGFyZSBmdWxsLgogCi0gICAgZm9yRWFjaFZhbHVlUHJvZmlsZShb
Jl0oVmFsdWVQcm9maWxlJiBwcm9maWxlKSB7CisgICAgZm9yRWFjaFZhbHVlUHJvZmlsZShbJl0o
VmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJndW1lbnQpIHsKICAgICAgICAgdW5zaWdu
ZWQgbnVtU2FtcGxlcyA9IHByb2ZpbGUudG90YWxOdW1iZXJPZlNhbXBsZXMoKTsKKyAgICAgICAg
c3RhdGljX2Fzc2VydChWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cyA9PSAxKTsKICAgICAg
ICAgaWYgKG51bVNhbXBsZXMgPiBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0cykKICAgICAg
ICAgICAgIG51bVNhbXBsZXMgPSBWYWx1ZVByb2ZpbGU6Om51bWJlck9mQnVja2V0czsgLy8gV2Ug
ZG9uJ3Qgd2FudCBwcm9maWxlcyB0aGF0IGFyZSBleHRyZW1lbHkgaG90IHRvIGJlIGdpdmVuIG1v
cmUgd2VpZ2h0LgogICAgICAgICBudW1iZXJPZlNhbXBsZXNJblByb2ZpbGVzICs9IG51bVNhbXBs
ZXM7Ci0gICAgICAgIGlmIChwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQgPCAwKSB7CisgICAgICAg
IGlmIChpc0FyZ3VtZW50KSB7CiAgICAgICAgICAgICBwcm9maWxlLmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChwcm9maWxlLm51bWJlck9mU2FtcGxlcygpIHx8IHByb2ZpbGUubV9wcmVkaWN0aW9uICE9
IFNwZWNOb25lKQorICAgICAgICBpZiAocHJvZmlsZS5udW1iZXJPZlNhbXBsZXMoKSB8fCBwcm9m
aWxlLmlzU2FtcGxlZEJlZm9yZSgpKQogICAgICAgICAgICAgbnVtYmVyT2ZMaXZlTm9uQXJndW1l
bnRWYWx1ZVByb2ZpbGVzKys7CiAgICAgICAgIHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0
aW9uKGxvY2tlcik7CiAgICAgfSk7CkBAIC0yNjUwLDcgKzI2NTEsNyBAQCB2b2lkIENvZGVCbG9j
azo6dXBkYXRlQWxsUHJlZGljdGlvbnNBbmRDb3VudExpdmVuZXNzKHVuc2lnbmVkJiBudW1iZXJP
ZkxpdmVOb25BcgogICAgIGlmIChhdXRvKiByYXJlRGF0YSA9IG1fcmFyZURhdGEuZ2V0KCkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiBwcm9maWxlQnVja2V0IDogcmFyZURhdGEtPm1fY2F0Y2hQcm9m
aWxlcykgewogICAgICAgICAgICAgcHJvZmlsZUJ1Y2tldC0+Zm9yRWFjaChbJl0gKFZhbHVlUHJv
ZmlsZUFuZE9wZXJhbmQmIHByb2ZpbGUpIHsKLSAgICAgICAgICAgICAgICBwcm9maWxlLm1fcHJv
ZmlsZS5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICBw
cm9maWxlLmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbihsb2NrZXIpOwogICAgICAgICAgICAgfSk7
CiAgICAgICAgIH0KICAgICB9CkBAIC0yODAwLDEyICsyODAxLDExIEBAIHZvaWQgQ29kZUJsb2Nr
Ojpub3RpZnlMZXhpY2FsQmluZGluZ1VwZGF0ZSgpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVl
UHJvZmlsZXMoKQogewogICAgIGRhdGFMb2coIlZhbHVlUHJvZmlsZSBmb3IgIiwgKnRoaXMsICI6
XG4iKTsKLSAgICBmb3JFYWNoVmFsdWVQcm9maWxlKFtdKFZhbHVlUHJvZmlsZSYgcHJvZmlsZSkg
ewotICAgICAgICBpZiAocHJvZmlsZS5tX2J5dGVjb2RlT2Zmc2V0IDwgMCkgewotICAgICAgICAg
ICAgQVNTRVJUKHByb2ZpbGUubV9ieXRlY29kZU9mZnNldCA9PSAtMSk7Ci0gICAgICAgICAgICBk
YXRhTG9nRigiICAgYXJnID0gJXU6ICIsIGkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IGRhdGFMb2dGKCIgICBiYyA9ICVkOiAiLCBwcm9maWxlLm1fYnl0ZWNvZGVPZmZzZXQpOworICAg
IGZvckVhY2hWYWx1ZVByb2ZpbGUoW10oVmFsdWVQcm9maWxlJiBwcm9maWxlLCBib29sIGlzQXJn
dW1lbnQpIHsKKyAgICAgICAgaWYgKGlzQXJndW1lbnQpCisgICAgICAgICAgICBkYXRhTG9nRigi
ICAgYXJnOiAiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIGJjOiAi
KTsKICAgICAgICAgaWYgKCFwcm9maWxlLm51bWJlck9mU2FtcGxlcygpICYmIHByb2ZpbGUubV9w
cmVkaWN0aW9uID09IFNwZWNOb25lKSB7CiAgICAgICAgICAgICBkYXRhTG9nRigiPGVtcHR5Plxu
Iik7CiAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAppbmRleCBhOTNjMzZmYjkxOGYzYjMwY2FiMGM3OThlNjFlNzBjYTU5MWIx
OGNmLi5mNWRiZmVjNjk0YmQxNDcyYjk5YWM1ZjBlYjMxZDBkMGFkMGNmZmRjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCkBAIC00NzgsNyArNDc4LDYgQEAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIEpTQ2VsbCB7CiAgICAgewogICAgICAgICBBU1NFUlQo
dm0oKS0+Y2FuVXNlSklUKCkpOyAvLyBUaGlzIGlzIG9ubHkgY2FsbGVkIGZyb20gdGhlIHZhcmlv
dXMgSklUIGNvbXBpbGVycyBvciBwbGFjZXMgdGhhdCBmaXJzdCBjaGVjayBudW1iZXJPZkFyZ3Vt
ZW50VmFsdWVQcm9maWxlcyBiZWZvcmUgY2FsbGluZyB0aGlzLgogICAgICAgICBWYWx1ZVByb2Zp
bGUmIHJlc3VsdCA9IG1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzW2FyZ3VtZW50SW5kZXhdOwotICAg
ICAgICBBU1NFUlQocmVzdWx0Lm1fYnl0ZWNvZGVPZmZzZXQgPT0gLTEpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIApAQCAtOTc0LDcgKzk3Myw3IEBAIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBKU0NlbGwgewogICAgIFZNKiBtX3ZtOwogCiAgICAgY29uc3Qgdm9pZCogbV9pbnN0
cnVjdGlvbnNSYXdQb2ludGVyIHsgbnVsbHB0ciB9OwotICAgIFNlbnRpbmVsTGlua2VkTGlzdDxM
TEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
PiBtX2luY29taW5nTExJbnRDYWxsczsKKyAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxs
TGlua0luZm8sIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4+IG1faW5j
b21pbmdMTEludENhbGxzOwogICAgIFN0cnVjdHVyZVdhdGNocG9pbnRNYXAgbV9sbGludEdldEJ5
SWRXYXRjaHBvaW50TWFwOwogICAgIFJlZlB0cjxKSVRDb2RlPiBtX2ppdENvZGU7CiAjaWYgRU5B
QkxFKEpJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2tJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
SW5saW5lcy5oCmluZGV4IGYwMGIzOTc4NzMyZTRmNjdkZDJlNTU2MTA0NzdmZGMyZjdhNWNhY2Iu
LjIyZTc2YjE4NWViOWViYTk3ZGU5YmIwODFkNjQxODZiZjU0Y2U0YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2tJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9ja0lubGluZXMuaApAQCAtMzUsMTEg
KzM1LDExIEBAIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+CiB2b2lkIENvZGVCbG9jazo6Zm9y
RWFjaFZhbHVlUHJvZmlsZShjb25zdCBGdW5jdG9yJiBmdW5jKQogewogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBudW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kpCi0gICAg
ICAgIGZ1bmModmFsdWVQcm9maWxlRm9yQXJndW1lbnQoaSkpOworICAgICAgICBmdW5jKHZhbHVl
UHJvZmlsZUZvckFyZ3VtZW50KGkpLCB0cnVlKTsKIAogICAgIGlmIChtX21ldGFkYXRhKSB7CiAj
ZGVmaW5lIFZJU0lUKF9fb3ApIFwKLSAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0YS5tX3Byb2ZpbGUpOyB9KTsKKyAgICBtX21l
dGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRhdGEpIHsgZnVuYyhtZXRhZGF0
YS5tX3Byb2ZpbGUsIGZhbHNlKTsgfSk7CiAKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX1dJVEhf
VkFMVUVfUFJPRklMRShWSVNJVCkKIApAQCAtNTMsMTYgKzUzLDIxIEBAIHZvaWQgQ29kZUJsb2Nr
Ojpmb3JFYWNoQXJyYXlQcm9maWxlKGNvbnN0IEZ1bmN0b3ImIGZ1bmMpCiB7CiAgICAgaWYgKG1f
bWV0YWRhdGEpIHsKICAgICAgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxPcEdldEJ5SWQ+KFsmXSAo
YXV0byYgbWV0YWRhdGEpIHsKLSAgICAgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgPT0gR2V0
QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQorICAgICAgICAgICAgaWYgKG1ldGFkYXRhLm1fbW9kZU1l
dGFkYXRhLm1vZGUgPT0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoKQogICAgICAgICAgICAgICAg
IGZ1bmMobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEuYXJyYXlMZW5ndGhNb2RlLmFycmF5UHJvZmls
ZSk7CiAgICAgICAgIH0pOwogCi0jZGVmaW5lIFZJU0lUKF9fb3ApIFwKKyNkZWZpbmUgVklTSVQx
KF9fb3ApIFwKICAgICBtX21ldGFkYXRhLT5mb3JFYWNoPF9fb3A+KFsmXSAoYXV0byYgbWV0YWRh
dGEpIHsgZnVuYyhtZXRhZGF0YS5tX2FycmF5UHJvZmlsZSk7IH0pOwogCi0gICAgICAgIEZPUl9F
QUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklTSVQpCisjZGVmaW5lIFZJU0lUMihfX29w
KSBcCisgICAgbV9tZXRhZGF0YS0+Zm9yRWFjaDxfX29wPihbJl0gKGF1dG8mIG1ldGFkYXRhKSB7
IGZ1bmMobWV0YWRhdGEubV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUpOyB9KTsKIAotI3Vu
ZGVmIFZJU0lUCisgICAgICAgIEZPUl9FQUNIX09QQ09ERV9XSVRIX0FSUkFZX1BST0ZJTEUoVklT
SVQxKQorICAgICAgICBGT1JfRUFDSF9PUENPREVfV0lUSF9MTElOVF9DQUxMX0xJTktfSU5GTyhW
SVNJVDIpCisKKyN1bmRlZiBWSVNJVDEKKyN1bmRlZiBWSVNJVDIKICAgICB9CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkTWV0YWRhdGEuaAppbmRleCBk
YzQzNGU2YzRiN2ZkNGVkODQ3ZmNiM2YzN2MxMmEzNzUxMDUxZTlkLi44NTI0OWI1NTY2MDg3ZGFm
MmE1N2VlZWMwYzg2Mjc3MjZmOGI4Y2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZE1ldGFkYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRNZXRhZGF0YS5oCkBAIC0yOCwzNCArMjgsODcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SWRNb2RlIDogdWludDhfdCB7Ci0gICAgRGVmYXVs
dCA9IDAsCi0gICAgVW5zZXQgPSAxLAotICAgIFByb3RvTG9hZCA9IDIsCisgICAgUHJvdG9Mb2Fk
ID0gMCwgLy8gVGhpcyBtdXN0IGJlIHplcm8gdG8gcmV1c2UgdGhlIGhpZ2hlciBiaXRzIG9mIHRo
ZSBwb2ludGVyIGFzIHRoaXMgUHJvdG9Mb2FkIG1vZGUuCisgICAgRGVmYXVsdCA9IDEsCisgICAg
VW5zZXQgPSAyLAogICAgIEFycmF5TGVuZ3RoID0gMywKIH07CiAKK3N0cnVjdCBHZXRCeUlkTW9k
ZU1ldGFkYXRhRGVmYXVsdCB7CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgUHJv
cGVydHlPZmZzZXQgY2FjaGVkT2Zmc2V0OworICAgIHVuc2lnbmVkIHBhZGRpbmcxOworfTsKK3N0
YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFEZWZhdWx0KSA9PSAxMik7CisK
K3N0cnVjdCBHZXRCeUlkTW9kZU1ldGFkYXRhVW5zZXQgeworICAgIFN0cnVjdHVyZUlEIHN0cnVj
dHVyZUlEOworICAgIHVuc2lnbmVkIHBhZGRpbmcxOworICAgIHVuc2lnbmVkIHBhZGRpbmcyOwor
fTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGFVbnNldCkgPT0gMTIp
OworCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVuZ3RoIHsKKyAgICBBcnJheVBy
b2ZpbGUgYXJyYXlQcm9maWxlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2Rl
TWV0YWRhdGFBcnJheUxlbmd0aCkgPT0gMTIpOworCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0
YVByb3RvTG9hZCB7CisgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7CisgICAgUHJvcGVydHlP
ZmZzZXQgY2FjaGVkT2Zmc2V0OworICAgIEpTT2JqZWN0KiBjYWNoZWRTbG90OworfTsKKyNpZiBD
UFUoTElUVExFX0VORElBTikgJiYgQ1BVKEFERFJFU1M2NCkKK3N0YXRpY19hc3NlcnQoc2l6ZW9m
KEdldEJ5SWRNb2RlTWV0YWRhdGFQcm90b0xvYWQpID09IDE2KTsKKyNlbmRpZgorCisvLyBJbiA2
NGJpdCBMaXR0bGUgZW5kaWFuIGFyY2hpdGVjdHVyZSwgdGhpcyB1bmlvbiBzaGFyZXMgUHJvdG9M
b2FkJ3MgSlNPYmplY3QqIGNhY2hlZFNsb3Qgd2l0aCAiaGl0Q291bnRGb3JMTEludENhY2hpbmci
IGFuZCAibW9kZSIuCisvLyBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgdGhlc2UgdmFsdWVzIG11
c3QgYmUgemVybyBpZiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCisjaWYgQ1BVKExJVFRMRV9FTkRJ
QU4pICYmIENQVShBRERSRVNTNjQpCiB1bmlvbiBHZXRCeUlkTW9kZU1ldGFkYXRhIHsKICAgICBH
ZXRCeUlkTW9kZU1ldGFkYXRhKCkKLSAgICB7IH0KLQotICAgIHN0cnVjdCBEZWZhdWx0IHsKLSAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgICAgIFByb3BlcnR5T2Zmc2V0IGNh
Y2hlZE9mZnNldDsKLSAgICB9IGRlZmF1bHRNb2RlOwotCi0gICAgc3RydWN0IFVuc2V0IHsKLSAg
ICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAgfSB1bnNldE1vZGU7Ci0KLSAgICBz
dHJ1Y3QgUHJvdG9Mb2FkIHsKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAg
ICAgIFByb3BlcnR5T2Zmc2V0IGNhY2hlZE9mZnNldDsKLSAgICAgICAgSlNPYmplY3QqIGNhY2hl
ZFNsb3Q7Ci0gICAgfSBwcm90b0xvYWRNb2RlOwotCi0gICAgc3RydWN0IEFycmF5TGVuZ3RoIHsK
LSAgICAgICAgQXJyYXlQcm9maWxlIGFycmF5UHJvZmlsZTsKLSAgICB9IGFycmF5TGVuZ3RoTW9k
ZTsKKyAgICB7CisgICAgICAgIGRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKKyAgICAgICAg
ZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKKyAgICAgICAgZGVmYXVsdE1vZGUucGFkZGlu
ZzEgPSAwOworICAgICAgICBtb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgICAgIGhp
dENvdW50Rm9yTExJbnRDYWNoaW5nID0gT3B0aW9uczo6cHJvdG90eXBlSGl0Q291bnRGb3JMTElu
dENhY2hpbmcoKTsKKyAgICB9CisKKyAgICBzdHJ1Y3QgeworICAgICAgICB1aW50MzJfdCBwYWRk
aW5nMTsKKyAgICAgICAgdWludDMyX3QgcGFkZGluZzI7CisgICAgICAgIHVpbnQzMl90IHBhZGRp
bmczOworICAgICAgICB1aW50MTZfdCBwYWRkaW5nNDsKKyAgICAgICAgR2V0QnlJZE1vZGUgbW9k
ZTsKKyAgICAgICAgdWludDhfdCBoaXRDb3VudEZvckxMSW50Q2FjaGluZzsgLy8gVGhpcyBtdXN0
IGJlIHplcm8gd2hlbiB3ZSB1c2UgUHJvdG9Mb2FkIG1vZGUuCisgICAgfTsKKyAgICBHZXRCeUlk
TW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKKyAgICBHZXRCeUlkTW9kZU1ldGFkYXRh
VW5zZXQgdW5zZXRNb2RlOworICAgIEdldEJ5SWRNb2RlTWV0YWRhdGFBcnJheUxlbmd0aCBhcnJh
eUxlbmd0aE1vZGU7CisgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9hZCBwcm90b0xvYWRN
b2RlOworfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKEdldEJ5SWRNb2RlTWV0YWRhdGEpID09IDE2
KTsKKyNlbHNlCitzdHJ1Y3QgR2V0QnlJZE1vZGVNZXRhZGF0YSB7CisgICAgR2V0QnlJZE1vZGVN
ZXRhZGF0YSgpCisgICAgeworICAgICAgICBkZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7Cisg
ICAgICAgIGRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CisgICAgICAgIGRlZmF1bHRNb2Rl
LnBhZGRpbmcxID0gMDsKKyAgICAgICAgbW9kZSA9IEdldEJ5SWRNb2RlOjpEZWZhdWx0OworICAg
ICAgICBoaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IE9wdGlvbnM6OnByb3RvdHlwZUhpdENvdW50
Rm9yTExJbnRDYWNoaW5nKCk7CisgICAgfQorCisgICAgdW5pb24geworICAgICAgICBHZXRCeUlk
TW9kZU1ldGFkYXRhRGVmYXVsdCBkZWZhdWx0TW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRh
ZGF0YVVuc2V0IHVuc2V0TW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YUFycmF5TGVu
Z3RoIGFycmF5TGVuZ3RoTW9kZTsKKyAgICAgICAgR2V0QnlJZE1vZGVNZXRhZGF0YVByb3RvTG9h
ZCBwcm90b0xvYWRNb2RlOworICAgIH07CisgICAgR2V0QnlJZE1vZGUgbW9kZTsKKyAgICB1aW50
OF90IGhpdENvdW50Rm9yTExJbnRDYWNoaW5nOwogfTsKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAppbmRleCA2ZTRlOGJmZGJlMTc1YzA2YmY5ODJlODM0MGVjNjQyYzM5YzIwMTg2Li5kYjlh
ZDE2MGFjMjgxMzBmMzk4NDFmZjNiZmViMzJiNjgzZGRlYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCkBAIC02NCw3ICs2NCw3IEBA
IEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkCiAgICAgICAgIGF1dG8mIG1ldGFkYXRhID0gaW5zdHJ1
Y3Rpb24tPmFzPE9wR2V0QnlJZD4oKS5tZXRhZGF0YShwcm9maWxlZEJsb2NrKTsKICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBub3QganVzdCBiYWlsIGlmIHdlIHNlZSBhIGdldF9ieV9pZF9w
cm90b19sb2FkLgogICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU4MDM5Ci0gICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGUgIT0gR2V0QnlJZE1vZGU6
OkRlZmF1bHQpCisgICAgICAgIGlmIChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlICE9IEdl
dEJ5SWRNb2RlOjpEZWZhdWx0KQogICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgZmFsc2UpOwogICAgICAgICBzdHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fbW9k
ZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEOwogICAgICAgICBicmVhazsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKaW5k
ZXggODRiNWMxMWM1ODY2NWQzMmJiZDVjMjIwZDlhOTE4MzgyODRhMWUxNi4uN2MyN2NkZjY2ZTdh
OWJkZGFhMmY2YWJlYTI2MjhmY2I0NjkzOWY2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKQEAgLTM0LDEwICszNCwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogc3RydWN0IEluc3RydWN0aW9uOwogCi1zdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
IHsKLSAgICBMTEludENhbGxMaW5rSW5mbygpCi0gICAgewotICAgIH0KK2NsYXNzIExMSW50Q2Fs
bExpbmtJbmZvIDogcHVibGljIFBhY2tlZFJhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5m
bz4geworcHVibGljOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisK
KyAgICBzdGF0aWMgY29uc3RleHByIHVpbnRwdHJfdCB1bmxpbmtlZEJpdCA9IDB4MTsKKworICAg
IExMSW50Q2FsbExpbmtJbmZvKCkgPSBkZWZhdWx0OwogICAgIAogICAgIH5MTEludENhbGxMaW5r
SW5mbygpCiAgICAgewpAQCAtNDUsMTkgKzQ4LDQ5IEBAIHN0cnVjdCBMTEludENhbGxMaW5rSW5m
byA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gewogICAg
ICAgICAgICAgcmVtb3ZlKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJl
dHVybiAhIWNhbGxlZTsgfQorICAgIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiAhKG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ICYgdW5saW5rZWRCaXQpOyB9CiAgICAg
CisKKyAgICB2b2lkIGxpbmsoVk0mIHZtLCBKU0NlbGwqIG93bmVyLCBKU09iamVjdCogY2FsbGVl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHI8SlNFbnRyeVB0clRhZz4gY29kZVB0cikKKyAgICB7Cisg
ICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgICAgIG1f
Y2FsbGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gYml0d2lzZV9jYXN0PHVpbnRwdHJf
dD4oY2FsbGVlKTsKKyAgICAgICAgdm0uaGVhcC53cml0ZUJhcnJpZXIob3duZXIsIGNhbGxlZSk7
CisgICAgICAgIG1fbWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgIH0KKwogICAgIHZv
aWQgdW5saW5rKCkKICAgICB7Ci0gICAgICAgIGNhbGxlZS5jbGVhcigpOwotICAgICAgICBtYWNo
aW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPigpOwor
ICAgICAgICAvLyBNYWtlIGxpbmsgaW52YWxpZGF0ZWQuIEl0IHdvcmtzIGJlY2F1c2UgTExJbnQg
dGVzdHMgdGhlIGdpdmVuIGNhbGxlZSB3aXRoIHRoaXMgcG9pbnRlci4gQnV0IGl0IGlzIHN0aWxs
IHZhbGlkIGFzIGxhc3RTZWVuQ2FsbGVlIQorICAgICAgICBtX2NhbGxlZU9yTGFzdFNlZW5DYWxs
ZWVXaXRoTGlua0JpdCB8PSB1bmxpbmtlZEJpdDsKKyAgICAgICAgbV9tYWNoaW5lQ29kZVRhcmdl
dCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPigpOwogICAgICAgICBpZiAo
aXNPbkxpc3QoKSkKICAgICAgICAgICAgIHJlbW92ZSgpOwogICAgIH0KLSAgICAKLSAgICBXcml0
ZUJhcnJpZXI8SlNPYmplY3Q+IGNhbGxlZTsKLSAgICBXcml0ZUJhcnJpZXI8SlNPYmplY3Q+IGxh
c3RTZWVuQ2FsbGVlOwotICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjxKU0VudHJ5UHRyVGFnPiBt
YWNoaW5lQ29kZVRhcmdldDsKKworICAgIEpTT2JqZWN0KiBjYWxsZWUoKSBjb25zdAorICAgIHsK
KyAgICAgICAgaWYgKCFpc0xpbmtlZCgpKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPihtX2NhbGxlZU9yTGFzdFNlZW5D
YWxsZWVXaXRoTGlua0JpdCk7CisgICAgfQorCisgICAgSlNPYmplY3QqIGxhc3RTZWVuQ2FsbGVl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8SlNPYmplY3QqPiht
X2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCAmIH51bmxpbmtlZEJpdCk7CisgICAg
fQorCisgICAgdm9pZCBjbGVhckxhc3RTZWVuQ2FsbGVlKCkKKyAgICB7CisgICAgICAgIG1fY2Fs
bGVlT3JMYXN0U2VlbkNhbGxlZVdpdGhMaW5rQml0ID0gdW5saW5rZWRCaXQ7CisgICAgfQorCisg
ICAgQXJyYXlQcm9maWxlIG1fYXJyYXlQcm9maWxlOworCitwcml2YXRlOgorICAgIHVpbnRwdHJf
dCBtX2NhbGxlZU9yTGFzdFNlZW5DYWxsZWVXaXRoTGlua0JpdCB7IHVubGlua2VkQml0IH07Cisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyPEpTRW50cnlQdHJUYWc+IG1fbWFjaGluZUNvZGVUYXJn
ZXQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNo
cG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBl
TG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKaW5kZXggMGVmNmE1NWM5YzcxOTYw
M2YxYTJlMzhiNTgwNTY2ZjBhMjQ2N2JlMS4uNTdhYmI5YTRjMDNmMmE5ZmY1MWVjZWRjZGJmMjE0
ZTg0YTk0MDhkNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xM
SW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3RydWN0dXJlV2F0Y2hwb2ludC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50UHJvdG90eXBlTG9hZEFkYXB0aXZlU3Ry
dWN0dXJlV2F0Y2hwb2ludC5jcHAKQEAgLTY1LDcgKzY1LDggQEAgdm9pZCBMTEludFByb3RvdHlw
ZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9pbnQ6OmZpcmVJbnRlcm5hbChWTSYgdm0sIGNv
bnN0IEYKIAogdm9pZCBMTEludFByb3RvdHlwZUxvYWRBZGFwdGl2ZVN0cnVjdHVyZVdhdGNocG9p
bnQ6OmNsZWFyTExJbnRHZXRCeUlkQ2FjaGUoT3BHZXRCeUlkOjpNZXRhZGF0YSYgbWV0YWRhdGEp
CiB7Ci0gICAgbWV0YWRhdGEubV9tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CisgICAgLy8g
S2VlcCBoaXRDb3VudEZvckxMSW50Q2FjaGluZyB2YWx1ZS4KKyAgICBtZXRhZGF0YS5tX21vZGVN
ZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkRlZmF1bHQ7CiAgICAgbWV0YWRhdGEubV9tb2Rl
TWV0YWRhdGEuZGVmYXVsdE1vZGUuY2FjaGVkT2Zmc2V0ID0gMDsKICAgICBtZXRhZGF0YS5tX21v
ZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRCA9IDA7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5o
CmluZGV4IDljM2IwNjg0MjcwMzRiMDg5YmEwOThlODIyZmZkMGUxNmVmMzUwOTYuLjhmNjBlYjBm
NDBhYzNiMTZkNmFiMDNkYWRkYzYyMjg4OWNlYjRjMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZhbHVlUHJvZmlsZS5oCkBAIC0x
MjksMTcgKzEyOSwxOCBAQCBzdHJ1Y3QgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUgOiBwdWJsaWMg
TWluaW1hbFZhbHVlUHJvZmlsZSB7CiAgICAgfQogICAgIAogICAgIGV4cGxpY2l0IExhenlPcGVy
YW5kVmFsdWVQcm9maWxlKGNvbnN0IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5JiBrZXkpCi0g
ICAgICAgIDogTWluaW1hbFZhbHVlUHJvZmlsZShrZXkuYnl0ZWNvZGVPZmZzZXQoKSkKLSAgICAg
ICAgLCBtX29wZXJhbmQoa2V5Lm9wZXJhbmQoKSkKKyAgICAgICAgOiBNaW5pbWFsVmFsdWVQcm9m
aWxlKCkKKyAgICAgICAgLCBtX2tleShrZXkpCiAgICAgewogICAgIH0KICAgICAKICAgICBMYXp5
T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBrZXkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlS2V5KG1fYnl0ZWNvZGVPZmZzZXQsIG1fb3BlcmFuZCk7
CisgICAgICAgIHJldHVybiBtX2tleTsKICAgICB9CiAgICAgCiAgICAgVmlydHVhbFJlZ2lzdGVy
IG1fb3BlcmFuZDsKKyAgICBMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZUtleSBtX2tleTsKICAgICAK
ICAgICB0eXBlZGVmIFNlZ21lbnRlZFZlY3RvcjxMYXp5T3BlcmFuZFZhbHVlUHJvZmlsZSwgOD4g
TGlzdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
YWRhdGFUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGFkYXRhVGFi
bGUuaAppbmRleCBhNWQ0MTIxYjFkNDFkMTYxYmYyNjU0MmUwOTI4NmNmYmQ5OTM5NWI4Li45NTRk
MGJhMTZkNzgyMTAzOTdiY2ZmZjk0ODY4OTgzYmEyMDJjNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0YWRhdGFUYWJsZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRhZGF0YVRhYmxlLmgKQEAgLTg4LDExICs4OCw2IEBAIGNs
YXNzIE1ldGFkYXRhVGFibGUgewogICAgICAgICByZXR1cm4gcmVmQ291bnQoKSA9PSAxOwogICAg
IH0KIAotICAgIFVubGlua2VkTWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNl
dCo+KHRoaXMpOwotICAgIH0KLQogcHJpdmF0ZToKICAgICBNZXRhZGF0YVRhYmxlKFVubGlua2Vk
TWV0YWRhdGFUYWJsZSYpOwogCkBAIC0xMDEsNiArOTYsMTEgQEAgY2xhc3MgTWV0YWRhdGFUYWJs
ZSB7CiAgICAgICAgIHJldHVybiAqYml0d2lzZV9jYXN0PFVubGlua2VkTWV0YWRhdGFUYWJsZTo6
TGlua2luZ0RhdGEqPigoYml0d2lzZV9jYXN0PHVpbnQ4X3QqPih0aGlzKSAtIHNpemVvZihVbmxp
bmtlZE1ldGFkYXRhVGFibGU6OkxpbmtpbmdEYXRhKSkpOwogICAgIH0KIAorICAgIFVubGlua2Vk
TWV0YWRhdGFUYWJsZTo6T2Zmc2V0KiBidWZmZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDxVbmxpbmtlZE1ldGFkYXRhVGFibGU6Ok9mZnNldCo+KHRoaXMpOworICAgIH0K
KwogICAgIEFMV0FZU19JTkxJTkUgdWludDhfdCogZ2V0SW1wbCh1bnNpZ25lZCBpKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx1aW50OF90Kj4odGhpcykgKyBidWZmZXIoKVtp
XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFs
bG9jYXRpb25Qcm9maWxlLmgKaW5kZXggYTcwNzUzYTdiOTk2NGRjOGM1YWY2MTgzZjM4MDJlMDU2
NGU1ZGU4Yy4uZjU2NzljOTNlNWNlMGQ0YzViYjE0OGFlMzVjNzI4ZTUzMjMzMzI5OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRpb25Qcm9m
aWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlLmgKQEAgLTM1LDE3ICszNSwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
RnVuY3Rpb25SYXJlRGF0YTsKIAotY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewordGVt
cGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK2NsYXNzIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlQmFz
ZSB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mQWxsb2NhdG9yKCkgeyByZXR1cm4gT0JKRUNUX09G
RlNFVE9GKE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX2FsbG9jYXRvcik7IH0KLSAgICBzdGF0
aWMgcHRyZGlmZl90IG9mZnNldE9mU3RydWN0dXJlKCkgeyByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KE9iamVjdEFsbG9jYXRpb25Qcm9maWxlLCBtX3N0cnVjdHVyZSk7IH0KLSAgICBzdGF0aWMgcHRy
ZGlmZl90IG9mZnNldE9mSW5saW5lQ2FwYWNpdHkoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0Yo
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGUsIG1faW5saW5lQ2FwYWNpdHkpOyB9CisgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkFsbG9jYXRvcigpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UsIG1fYWxsb2NhdG9yKTsgfQorICAgIHN0YXRpYyBw
dHJkaWZmX3Qgb2Zmc2V0T2ZTdHJ1Y3R1cmUoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlLCBtX3N0cnVjdHVyZSk7IH0KIAotICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlKCkKLSAgICAgICAgOiBtX2lubGluZUNhcGFjaXR5KDApCi0gICAgewot
ICAgIH0KKyAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2UoKSA9IGRlZmF1bHQ7CiAKICAg
ICBib29sIGlzTnVsbCgpIHsgcmV0dXJuICFtX3N0cnVjdHVyZTsgfQogCkBAIC01OCwzNyArNTUs
NzQgQEAgY2xhc3MgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUgewogICAgICAgICBXVEY6OmxvYWRM
b2FkRmVuY2UoKTsKICAgICAgICAgcmV0dXJuIHN0cnVjdHVyZTsKICAgICB9CisKK3Byb3RlY3Rl
ZDoKKyAgICB2b2lkIGNsZWFyKCkKKyAgICB7CisgICAgICAgIG1fYWxsb2NhdG9yID0gQWxsb2Nh
dG9yKCk7CisgICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIEFTU0VSVChpc051
bGwoKSk7CisgICAgfQorCisgICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYgdmlz
aXRvcikKKyAgICB7CisgICAgICAgIHZpc2l0b3IuYXBwZW5kKG1fc3RydWN0dXJlKTsKKyAgICB9
CisKK3ByaXZhdGU6CisgICAgdW5zaWduZWQgcG9zc2libGVEZWZhdWx0UHJvcGVydHlDb3VudChW
TSYsIEpTT2JqZWN0KiBwcm90b3R5cGUpOworCisgICAgQWxsb2NhdG9yIG1fYWxsb2NhdG9yOyAv
LyBQcmVjb21wdXRlZCB0byBtYWtlIHRoaW5ncyBlYXNpZXIgZm9yIGdlbmVyYXRlZCBjb2RlLgor
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOworfTsKKworY2xhc3MgT2Jq
ZWN0QWxsb2NhdGlvblByb2ZpbGUgOiBwdWJsaWMgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNl
PE9iamVjdEFsbG9jYXRpb25Qcm9maWxlPiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IE9i
amVjdEFsbG9jYXRpb25Qcm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZT47CisKKyAg
ICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpID0gZGVmYXVsdDsKKworICAgIHVzaW5nIEJhc2U6
OmNsZWFyOworICAgIHVzaW5nIEJhc2U6OnZpc2l0QWdncmVnYXRlOworCisgICAgdm9pZCBzZXRQ
cm90b3R5cGUoVk0mLCBKU0NlbGwqLCBKU09iamVjdCopIHsgfQorfTsKKworY2xhc3MgT2JqZWN0
QWxsb2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlIDogcHVibGljIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlQmFzZTxPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU+IHsKK3B1Ymxp
YzoKKyAgICB1c2luZyBCYXNlID0gT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZT47CisKKyAgICBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZVdpdGhQcm90b3R5cGUoKSA9IGRlZmF1bHQ7CisKICAgICBKU09iamVjdCogcHJvdG90eXBl
KCkKICAgICB7CiAgICAgICAgIEpTT2JqZWN0KiBwcm90b3R5cGUgPSBtX3Byb3RvdHlwZS5nZXQo
KTsKICAgICAgICAgV1RGOjpsb2FkTG9hZEZlbmNlKCk7CiAgICAgICAgIHJldHVybiBwcm90b3R5
cGU7CiAgICAgfQotICAgIHVuc2lnbmVkIGlubGluZUNhcGFjaXR5KCkgeyByZXR1cm4gbV9pbmxp
bmVDYXBhY2l0eTsgfQotCiAKICAgICB2b2lkIGNsZWFyKCkKICAgICB7Ci0gICAgICAgIG1fYWxs
b2NhdG9yID0gQWxsb2NhdG9yKCk7Ci0gICAgICAgIG1fc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgIEJhc2U6OmNsZWFyKCk7CiAgICAgICAgIG1fcHJvdG90eXBlLmNsZWFyKCk7Ci0gICAgICAg
IG1faW5saW5lQ2FwYWNpdHkgPSAwOwogICAgICAgICBBU1NFUlQoaXNOdWxsKCkpOwogICAgIH0K
IAogICAgIHZvaWQgdmlzaXRBZ2dyZWdhdGUoU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgewot
ICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3N0cnVjdHVyZSk7CisgICAgICAgIEJhc2U6OnZpc2l0
QWdncmVnYXRlKHZpc2l0b3IpOwogICAgICAgICB2aXNpdG9yLmFwcGVuZChtX3Byb3RvdHlwZSk7
CiAgICAgfQogCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIHBvc3NpYmxlRGVmYXVsdFByb3BlcnR5
Q291bnQoVk0mLCBKU09iamVjdCogcHJvdG90eXBlKTsKKyAgICB2b2lkIHNldFByb3RvdHlwZShW
TSYgdm0sIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBvYmplY3QpCisgICAgeworICAgICAgICBt
X3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBvYmplY3QpOworICAgIH0KIAotICAgIEFsbG9jYXRv
ciBtX2FsbG9jYXRvcjsgLy8gUHJlY29tcHV0ZWQgdG8gbWFrZSB0aGluZ3MgZWFzaWVyIGZvciBn
ZW5lcmF0ZWQgY29kZS4KLSAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsK
K3ByaXZhdGU6CiAgICAgV3JpdGVCYXJyaWVyPEpTT2JqZWN0PiBtX3Byb3RvdHlwZTsKLSAgICB1
bnNpZ25lZCBtX2lubGluZUNhcGFjaXR5OwogfTsKIAorCisKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVjdEFsbG9jYXRp
b25Qcm9maWxlSW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09iamVj
dEFsbG9jYXRpb25Qcm9maWxlSW5saW5lcy5oCmluZGV4IDQ5OTkxMjFiMTY2MDY0M2M4NTk3ZTMy
MGEwYTYyNWRkYzJjNWQ2ODIuLmYxMWM0Y2M0ZjVmNDNhYTZmNzM0Nzg1NDQwYWRmN2EwYmU4MTg5
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT2JqZWN0QWxsb2NhdGlvblByb2ZpbGVJbmxpbmVzLmgKQEAgLTMxLDEyICszMSwxMSBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAotQUxXQVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTQ2VsbCogb3duZXIsIEpTT2JqZWN0KiBwcm90b3R5cGUsIHVuc2lnbmVkIGluZmVy
cmVkSW5saW5lQ2FwYWNpdHksIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yLCBGdW5jdGlvblJhcmVE
YXRhKiBmdW5jdGlvblJhcmVEYXRhKQordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK0FMV0FZ
U19JTkxJTkUgdm9pZCBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZUJhc2U8RGVyaXZlZD46OmluaXRp
YWxpemVQcm9maWxlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDZWxs
KiBvd25lciwgSlNPYmplY3QqIHByb3RvdHlwZSwgdW5zaWduZWQgaW5mZXJyZWRJbmxpbmVDYXBh
Y2l0eSwgSlNGdW5jdGlvbiogY29uc3RydWN0b3IsIEZ1bmN0aW9uUmFyZURhdGEqIGZ1bmN0aW9u
UmFyZURhdGEpCiB7CiAgICAgQVNTRVJUKCFtX2FsbG9jYXRvcik7CiAgICAgQVNTRVJUKCFtX3N0
cnVjdHVyZSk7Ci0gICAgQVNTRVJUKCFtX3Byb3RvdHlwZSk7Ci0gICAgQVNTRVJUKCFtX2lubGlu
ZUNhcGFjaXR5KTsKIAogICAgIC8vIEZJWE1FOiBUZWFjaCBjcmVhdGVfdGhpcydzIGZhc3QgcGF0
aCBob3cgdG8gYWxsb2NhdGUgcG9seQogICAgIC8vIHByb3RvIG9iamVjdHM6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc1MTcKQEAgLTU2LDggKzU1LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmls
ZShWTSYgdm0sIEpTR2xvYmFsT2IKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0cnVjdHVy
ZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gRmluYWxPYmplY3RUeXBlKTsKICAgICAgICAgICAgIG1f
YWxsb2NhdG9yID0gQWxsb2NhdG9yKCk7CiAgICAgICAgICAgICBtX3N0cnVjdHVyZS5zZXQodm0s
IG93bmVyLCBzdHJ1Y3R1cmUpOwotICAgICAgICAgICAgbV9wcm90b3R5cGUuc2V0KHZtLCBvd25l
ciwgcHJvdG90eXBlKTsKLSAgICAgICAgICAgIG1faW5saW5lQ2FwYWNpdHkgPSBzdHJ1Y3R1cmUt
PmlubGluZUNhcGFjaXR5KCk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxEZXJpdmVkKj4odGhp
cyktPnNldFByb3RvdHlwZSh2bSwgb3duZXIsIHByb3RvdHlwZSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIApAQCAtMTM4LDExICsxMzYsMTEgQEAgQUxXQVlTX0lOTElORSB2b2lk
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjppbml0aWFsaXplUHJvZmlsZShWTSYgdm0sIEpTR2xv
YmFsT2IKICAgICBXVEY6OnN0b3JlU3RvcmVGZW5jZSgpOwogCiAgICAgbV9zdHJ1Y3R1cmUuc2V0
KHZtLCBvd25lciwgc3RydWN0dXJlKTsKLSAgICBtX3Byb3RvdHlwZS5zZXQodm0sIG93bmVyLCBw
cm90b3R5cGUpOwotICAgIG1faW5saW5lQ2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKKyAgICBz
dGF0aWNfY2FzdDxEZXJpdmVkKj4odGhpcyktPnNldFByb3RvdHlwZSh2bSwgb3duZXIsIHByb3Rv
dHlwZSk7CiB9CiAKLUFMV0FZU19JTkxJTkUgdW5zaWduZWQgT2JqZWN0QWxsb2NhdGlvblByb2Zp
bGU6OnBvc3NpYmxlRGVmYXVsdFByb3BlcnR5Q291bnQoVk0mIHZtLCBKU09iamVjdCogcHJvdG90
eXBlKQordGVtcGxhdGU8dHlwZW5hbWUgRGVyaXZlZD4KK0FMV0FZU19JTkxJTkUgdW5zaWduZWQg
T2JqZWN0QWxsb2NhdGlvblByb2ZpbGVCYXNlPERlcml2ZWQ+Ojpwb3NzaWJsZURlZmF1bHRQcm9w
ZXJ0eUNvdW50KFZNJiB2bSwgSlNPYmplY3QqIHByb3RvdHlwZSkKIHsKICAgICBpZiAocHJvdG90
eXBlID09IHByb3RvdHlwZS0+Z2xvYmFsT2JqZWN0KHZtKS0+b2JqZWN0UHJvdG90eXBlKCkpCiAg
ICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCmlu
ZGV4IDhhYzYwM2UzY2M1ZjdiMTkzNTQ0YmIwY2ZmMDg0OGRkYjIyMDc0Y2UuLjQ0MjdkZDk4YTQw
NzE2ZjllMzhjNDY5ZTcyY2YwYjYwZTljYzU5OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgKQEAgLTExMSwxMCArMTExLDYgQEAgZXh0ZXJuIGNvbnN0IHVuc2lnbmVk
IG9wY29kZUxlbmd0aHNbXTsKICAgICBtYWNybyhPcFRhaWxDYWxsRm9yd2FyZEFyZ3VtZW50cykg
XAogICAgIG1hY3JvKE9wQ29uc3RydWN0VmFyYXJncykgXAogICAgIG1hY3JvKE9wR2V0QnlWYWwp
IFwKLSAgICBtYWNybyhPcENhbGwpIFwKLSAgICBtYWNybyhPcFRhaWxDYWxsKSBcCi0gICAgbWFj
cm8oT3BDYWxsRXZhbCkgXAotICAgIG1hY3JvKE9wQ29uc3RydWN0KSBcCiAgICAgbWFjcm8oT3BJ
bkJ5VmFsKSBcCiAgICAgbWFjcm8oT3BQdXRCeVZhbCkgXAogICAgIG1hY3JvKE9wUHV0QnlWYWxE
aXJlY3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1
ZVByb2ZpbGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUu
aAppbmRleCBmYTBkM2IwN2EzYzQ0NmJkMWEwMDMwZTUxMjQxODRlM2I0NGZhZTk1Li40ODgzYjRi
M2QyMWJiZmM4ZWQ2NmNmYjk0NzU5MGQ3MDk1YWI2MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5oCkBAIC00NCwxNCArNDQsNiBAQCBzdHJ1Y3Qg
VmFsdWVQcm9maWxlQmFzZSB7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHRvdGFsTnVtYmVy
T2ZCdWNrZXRzID0gbnVtYmVyT2ZCdWNrZXRzICsgbnVtYmVyT2ZTcGVjRmFpbEJ1Y2tldHM7CiAg
ICAgCiAgICAgVmFsdWVQcm9maWxlQmFzZSgpCi0gICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgt
MSkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9m
QnVja2V0czsgKytpKQotICAgICAgICAgICAgbV9idWNrZXRzW2ldID0gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7Ci0gICAgfQotICAgIAotICAgIFZhbHVlUHJvZmlsZUJhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQotICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpCiAg
ICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG90YWxOdW1iZXJPZkJ1Y2tl
dHM7ICsraSkKICAgICAgICAgICAgIG1fYnVja2V0c1tpXSA9IEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOwpAQCAtODYsOCArNzgsMTAgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAg
IAogICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZTYW1wbGVzKCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIHJldHVybiBudW1iZXJPZlNhbXBsZXMoKSArIG1fbnVtYmVyT2ZTYW1wbGVzSW5QcmVkaWN0
aW9uOworICAgICAgICByZXR1cm4gbnVtYmVyT2ZTYW1wbGVzKCkgKyBpc1NhbXBsZWRCZWZvcmUo
KTsKICAgICB9CisKKyAgICBib29sIGlzU2FtcGxlZEJlZm9yZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlZGljdGlvbiAhPSBTcGVjTm9uZTsgfQogICAgIAogICAgIGJvb2wgaXNMaXZlKCkgY29uc3QK
ICAgICB7CkBAIC0xMDksNyArMTAzLDcgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAg
IAogICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KQogICAgIHsKLSAgICAgICAgb3V0LnBy
aW50KCJzYW1wbGVzID0gIiwgdG90YWxOdW1iZXJPZlNhbXBsZXMoKSwgIiBwcmVkaWN0aW9uID0g
IiwgU3BlY3VsYXRpb25EdW1wKG1fcHJlZGljdGlvbikpOworICAgICAgICBvdXQucHJpbnQoInNh
bXBsZWQgYmVmb3JlID0gIiwgaXNTYW1wbGVkQmVmb3JlKCksICIgbGl2ZSBzYW1wbGVzID0gIiwg
bnVtYmVyT2ZTYW1wbGVzKCksICIgcHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3By
ZWRpY3Rpb24pKTsKICAgICAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCB0b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKG1fYnVja2V0c1tpXSk7CkBAIC0xMzMs
NyArMTI3LDYgQEAgc3RydWN0IFZhbHVlUHJvZmlsZUJhc2UgewogICAgICAgICAgICAgaWYgKCF2
YWx1ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIAotICAgICAgICAg
ICAgbV9udW1iZXJPZlNhbXBsZXNJblByZWRpY3Rpb24rKzsKICAgICAgICAgICAgIG1lcmdlU3Bl
Y3VsYXRpb24obV9wcmVkaWN0aW9uLCBzcGVjdWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBtX2J1Y2tldHNbaV0gPSBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKQEAgLTE0MiwxNyArMTM1LDEzIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsK
ICAgICAgICAgcmV0dXJuIG1fcHJlZGljdGlvbjsKICAgICB9CiAgICAgCi0gICAgaW50IG1fYnl0
ZWNvZGVPZmZzZXQ7IC8vIC0xIGZvciBwcm9sb2d1ZQotICAgIHVuc2lnbmVkIG1fbnVtYmVyT2ZT
YW1wbGVzSW5QcmVkaWN0aW9uIHsgMCB9OwotICAgIAotICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJl
ZGljdGlvbiB7IFNwZWNOb25lIH07Ci0gICAgCiAgICAgRW5jb2RlZEpTVmFsdWUgbV9idWNrZXRz
W3RvdGFsTnVtYmVyT2ZCdWNrZXRzXTsKKworICAgIFNwZWN1bGF0ZWRUeXBlIG1fcHJlZGljdGlv
biB7IFNwZWNOb25lIH07CiB9OwogCiBzdHJ1Y3QgTWluaW1hbFZhbHVlUHJvZmlsZSA6IHB1Ymxp
YyBWYWx1ZVByb2ZpbGVCYXNlPDA+IHsKICAgICBNaW5pbWFsVmFsdWVQcm9maWxlKCk6IFZhbHVl
UHJvZmlsZUJhc2U8MD4oKSB7IH0KLSAgICBNaW5pbWFsVmFsdWVQcm9maWxlKGludCBieXRlY29k
ZU9mZnNldCk6IFZhbHVlUHJvZmlsZUJhc2U8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAog
dGVtcGxhdGU8dW5zaWduZWQgbG9nTnVtYmVyT2ZCdWNrZXRzQXJndW1lbnQ+CkBAIC0xNjMsMjMg
KzE1MiwxMiBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyA6IHB1
YmxpYyBWYWx1ZVByb2ZpbGVCYXNlPDEgPDwgbG9nTnVtYgogICAgICAgICA6IFZhbHVlUHJvZmls
ZUJhc2U8MSA8PCBsb2dOdW1iZXJPZkJ1Y2tldHNBcmd1bWVudD4oKQogICAgIHsKICAgICB9Ci0g
ICAgVmFsdWVQcm9maWxlV2l0aExvZ051bWJlck9mQnVja2V0cyhpbnQgYnl0ZWNvZGVPZmZzZXQp
Ci0gICAgICAgIDogVmFsdWVQcm9maWxlQmFzZTwxIDw8IGxvZ051bWJlck9mQnVja2V0c0FyZ3Vt
ZW50PihieXRlY29kZU9mZnNldCkKLSAgICB7Ci0gICAgfQogfTsKIAogc3RydWN0IFZhbHVlUHJv
ZmlsZSA6IHB1YmxpYyBWYWx1ZVByb2ZpbGVXaXRoTG9nTnVtYmVyT2ZCdWNrZXRzPDA+IHsKICAg
ICBWYWx1ZVByb2ZpbGUoKSA6IFZhbHVlUHJvZmlsZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4o
KSB7IH0KLSAgICBWYWx1ZVByb2ZpbGUoaW50IGJ5dGVjb2RlT2Zmc2V0KSA6IFZhbHVlUHJvZmls
ZVdpdGhMb2dOdW1iZXJPZkJ1Y2tldHM8MD4oYnl0ZWNvZGVPZmZzZXQpIHsgfQogfTsKIAotdGVt
cGxhdGU8dHlwZW5hbWUgVD4KLWlubGluZSBpbnQgZ2V0VmFsdWVQcm9maWxlQnl0ZWNvZGVPZmZz
ZXQoVCogdmFsdWVQcm9maWxlKQotewotICAgIHJldHVybiB2YWx1ZVByb2ZpbGUtPm1fYnl0ZWNv
ZGVPZmZzZXQ7Ci19Ci0KIC8vIFRoaXMgaXMgYSBtaW5pIHZhbHVlIHByb2ZpbGUgdG8gY2F0Y2gg
cGF0aG9sb2dpZXMuIEl0IGlzIGEgY291bnRlciB0aGF0IGdldHMKIC8vIGluY3JlbWVudGVkIHdo
ZW4gd2UgdGFrZSB0aGUgc2xvdyBwYXRoIG9uIGFueSBpbnN0cnVjdGlvbi4KIHN0cnVjdCBSYXJl
Q2FzZVByb2ZpbGUgewpAQCAtMTk4LDggKzE3Niw3IEBAIGlubGluZSBpbnQgZ2V0UmFyZUNhc2VQ
cm9maWxlQnl0ZWNvZGVPZmZzZXQoUmFyZUNhc2VQcm9maWxlKiByYXJlQ2FzZVByb2ZpbGUpCiAg
ICAgcmV0dXJuIHJhcmVDYXNlUHJvZmlsZS0+bV9ieXRlY29kZU9mZnNldDsKIH0KIAotc3RydWN0
IFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQgewotICAgIFZhbHVlUHJvZmlsZSBtX3Byb2ZpbGU7Citz
dHJ1Y3QgVmFsdWVQcm9maWxlQW5kT3BlcmFuZCA6IHB1YmxpYyBWYWx1ZVByb2ZpbGUgewogICAg
IGludCBtX29wZXJhbmQ7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDY1MDVhZDU3OTM0NzAyMTE5YzU4ZmI2Nzg3ZDlhNmNk
ODgzNGQzYzUuLmI2ODY1ZjdhY2FjNzEyMGQ4ZjE2YTViNGE2NDU3MDZiZWQ2YTBjY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC00
Nzk1LDcgKzQ3OTUsMTAgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgY2FzZSBvcF90b190aGlzOiB7CiAgICAgICAgICAgICBOb2RlKiBv
cDEgPSBnZXRUaGlzKCk7CiAgICAgICAgICAgICBhdXRvJiBtZXRhZGF0YSA9IGN1cnJlbnRJbnN0
cnVjdGlvbi0+YXM8T3BUb1RoaXM+KCkubWV0YWRhdGEoY29kZUJsb2NrKTsKLSAgICAgICAgICAg
IFN0cnVjdHVyZSogY2FjaGVkU3RydWN0dXJlID0gbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgICAgICAgICBTdHJ1Y3R1cmVJRCBjYWNoZWRTdHJ1Y3R1cmVJRCA9IG1ldGFk
YXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CisgICAgICAgICAgICBTdHJ1Y3R1cmUqIGNhY2hlZFN0
cnVjdHVyZSA9IG51bGxwdHI7CisgICAgICAgICAgICBpZiAoY2FjaGVkU3RydWN0dXJlSUQpCisg
ICAgICAgICAgICAgICAgY2FjaGVkU3RydWN0dXJlID0gbV92bS0+aGVhcC5zdHJ1Y3R1cmVJRFRh
YmxlKCkuZ2V0KGNhY2hlZFN0cnVjdHVyZUlEKTsKICAgICAgICAgICAgIGlmIChtZXRhZGF0YS5t
X3RvVGhpc1N0YXR1cyAhPSBUb1RoaXNPSwogICAgICAgICAgICAgICAgIHx8ICFjYWNoZWRTdHJ1
Y3R1cmUKICAgICAgICAgICAgICAgICB8fCBjYWNoZWRTdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5t
ZXRob2RUYWJsZS50b1RoaXMgIT0gSlNPYmplY3Q6OmluZm8oKS0+bWV0aG9kVGFibGUudG9UaGlz
CkBAIC02MDExLDcgKzYwMTQsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICAgICAgYnVmZmVyLT5mb3JFYWNoKFsmXSAoVmFs
dWVQcm9maWxlQW5kT3BlcmFuZCYgcHJvZmlsZSkgewogICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZChwcm9maWxlLm1fb3BlcmFuZCk7Ci0gICAgICAgICAgICAgICAg
ICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLm1fcHJvZmlsZS5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24obG9ja2VyKTsKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUuY29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKGxvY2tl
cik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChvcGVyYW5kLmlzTG9jYWwoKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIGxvY2FsUHJlZGljdGlvbnMuYXBwZW5kKHByZWRpY3Rpb24pOwogICAg
ICAgICAgICAgICAgICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCmluZGV4IGVlNTNkNjFkN2Y3NTQ2NzgxYTkwNDY3NjBmMmE1YTllZjM4YjZl
ZDUuLjI1YzRjMDkwZDYwMDFlNmJjMTFmNDBiNjQ2YjlkZjY3NmI2YzA0MTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzU1LDcgKzM1NSw3IEBA
IEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVUaGlzKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIGNvbnN0cnVjdG9yCiAgICAgaWYgKGNvbnN0cnVjdG9yLT50eXBlKCkgPT0g
SlNGdW5jdGlvblR5cGUgJiYganNDYXN0PEpTRnVuY3Rpb24qPihjb25zdHJ1Y3RvciktPmNhblVz
ZUFsbG9jYXRpb25Qcm9maWxlKCkpIHsKICAgICAgICAgYXV0byByYXJlRGF0YSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oY29uc3RydWN0b3IpLT5lbnN1cmVSYXJlRGF0YUFuZEFsbG9jYXRpb25Qcm9m
aWxlKGV4ZWMsIGlubGluZUNhcGFjaXR5KTsKICAgICAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5v
RXhjZXB0aW9uKCk7Ci0gICAgICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlKiBhbGxvY2F0aW9u
UHJvZmlsZSA9IHJhcmVEYXRhLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgICAgICBP
YmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUqIGFsbG9jYXRpb25Qcm9maWxlID0g
cmFyZURhdGEtPm9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCk7CiAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gYWxsb2NhdGlvblByb2ZpbGUtPnN0cnVjdHVyZSgpOwogICAgICAgICBKU09i
amVjdCogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKICAg
ICAgICAgaWYgKHN0cnVjdHVyZS0+aGFzUG9seVByb3RvKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZGViZDAzZWIxZWM2ODVk
MDdjMGE3NWIxZThkM2ZhNGE5ZTVjNjc1Mi4uZDA0MTBiMzVkMzkwMTdmODBkYjU5MDVlZDQ5MmQz
ZTMzODY4YmM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTEyNTY1LDE0ICsxMjU2NSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQ3JlYXRlVGhpcyhOb2RlKiBub2RlKQogICAgIHNsb3dQYXRoLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZUdQUikpOwogICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRh
KCkpLCByYXJlRGF0YUdQUik7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJhcmVEYXRhR1BSKSk7Ci0gICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6QWRkcmVzcyhyYXJlRGF0YUdQUiwgRnVuY3Rpb25SYXJlRGF0YTo6b2Zm
c2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGU6
Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOwotICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNl
dE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpv
ZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlR1BSKTsKKyAgICBtX2ppdC5sb2FkUHRyKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRP
Zk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQ
cm90b3R5cGU6Om9mZnNldE9mQWxsb2NhdG9yKCkpLCBhbGxvY2F0b3JHUFIpOworICAgIG1faml0
LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmFyZURhdGFHUFIsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZUdQUik7
CiAKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1p
dEFsbG9jYXRlSlNPYmplY3QocmVzdWx0R1BSLCBKSVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFs
bG9jYXRvckdQUiwgc3RydWN0dXJlR1BSLCBidXR0ZXJmbHksIHNjcmF0Y2hHUFIsIHNsb3dQYXRo
KTsKIAotICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJlc3MoY2FsbGVlR1BSLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCByYXJlRGF0YUdQUik7Ci0gICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJhcmVEYXRhR1BSLCBGdW5jdGlvblJhcmVEYXRh
OjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJv
ZmlsZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOworICAg
IG1faml0LmxvYWQ4KEpJVENvbXBpbGVyOjpBZGRyZXNzKHN0cnVjdHVyZUdQUiwgU3RydWN0dXJl
OjppbmxpbmVDYXBhY2l0eU9mZnNldCgpKSwgaW5saW5lQ2FwYWNpdHlHUFIpOwogICAgIG1faml0
LmVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRHUFIsIGlubGluZUNhcGFjaXR5R1BS
KTsKICAgICBtX2ppdC5tdXRhdG9yRmVuY2UoKm1faml0LnZtKCkpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCmluZGV4
IDg5OTk1ZTY3NDhkM2YyNDJhNWUwMjA1Y2EwY2FlMTY0NTgzOTdlMzAuLjcwYzk5M2E3MThhNzcx
ZjE2MWRjZjJiZTM0MjEyZjA5MThlYjlmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS5oCkBAIC01Nyw4ICs1Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKICAgICBtYWNybyhEaXJlY3RBcmd1bWVu
dHNfbWluQ2FwYWNpdHksIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZNaW5DYXBhY2l0eSgpKSBc
CiAgICAgbWFjcm8oRGlyZWN0QXJndW1lbnRzX21hcHBlZEFyZ3VtZW50cywgRGlyZWN0QXJndW1l
bnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSBcCiAgICAgbWFjcm8oRGlyZWN0QXJndW1l
bnRzX21vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvciwgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRP
Zk1vZGlmaWVkQXJndW1lbnRzRGVzY3JpcHRvcigpKSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJl
RGF0YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigp
KSBcCi0gICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0YV9zdHJ1Y3R1cmUsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSBcCisgICAgbWFjcm8oRnVuY3Rpb25SYXJlRGF0
YV9hbGxvY2F0b3IsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblBy
b2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZB
bGxvY2F0b3IoKSkgXAorICAgIG1hY3JvKEZ1bmN0aW9uUmFyZURhdGFfc3RydWN0dXJlLCBGdW5j
dGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3RydWN0dXJlKCkpIFwKICAg
ICBtYWNybyhHZXR0ZXJTZXR0ZXJfZ2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNldE9mR2V0dGVy
KCkpIFwKICAgICBtYWNybyhHZXR0ZXJTZXR0ZXJfc2V0dGVyLCBHZXR0ZXJTZXR0ZXI6Om9mZnNl
dE9mU2V0dGVyKCkpIFwKICAgICBtYWNybyhKU0FycmF5QnVmZmVyVmlld19sZW5ndGgsIEpTQXJy
YXlCdWZmZXJWaWV3OjpvZmZzZXRPZkxlbmd0aCgpKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDYWxsLmNwcAppbmRleCBhZmM0YjI5NTNkMzIyNWRlMDg2MTY3Mjc0NzNjYWQ3Y2VjM2RjMjU5
Li5jMDY0Mzg3YmVhNjBjNDkzODczYTFlOTFlNTVkNGQ1NTlmN2FjNzVkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ2FsbC5jcHAKQEAgLTY5LDcgKzY5LDcgQEAgSklUOjpjb21waWxlU2V0
dXBGcmFtZShjb25zdCBPcCYgYnl0ZWNvZGUsIENhbGxMaW5rSW5mbyopCiAgICAgICAgIGVtaXRH
ZXRWaXJ0dWFsUmVnaXN0ZXIocmVnaXN0ZXJPZmZzZXQgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0SW5jbHVkaW5nVGhpcygwKSwgcmVnVDApOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJ
Zk5vdENlbGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMCwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgcmVnVDApOwotICAgICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRh
ZGF0YS5tX2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAg
ICAgICBzdG9yZTMyKHJlZ1QwLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmls
ZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhp
cyk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENh
bGwzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAK
aW5kZXggYjQyZTk5N2FhYjYzZGJiMTUyZGFlMjQyZDdiOTRmMGUzNGU5MzY5Ny4uYWY2MDhmMDMx
MGQxOGViMmZiYmUyZGQ2ODRiMmU1Y2VmZDgzYjc1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ2FsbDMyXzY0LmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIEpJVDo6Y29tcGlsZVNl
dHVwRnJhbWUoY29uc3QgT3AmIGJ5dGVjb2RlLCBDYWxsTGlua0luZm8qKQogICAgICAgICBlbWl0
TG9hZChyZWdpc3Rlck9mZnNldCArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdU
aGlzKDApLCByZWdUMCwgcmVnVDEpOwogICAgICAgICBKdW1wIGRvbmUgPSBicmFuY2hJZk5vdENl
bGwocmVnVDApOwogICAgICAgICBsb2FkMzIoQWRkcmVzcyhyZWdUMSwgSlNDZWxsOjpzdHJ1Y3R1
cmVJRE9mZnNldCgpKSwgcmVnVDEpOwotICAgICAgICBzdG9yZTMyKHJlZ1QxLCBtZXRhZGF0YS5t
X2FycmF5UHJvZmlsZS5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOworICAgICAgICBz
dG9yZTMyKHJlZ1QxLCBtZXRhZGF0YS5tX2NhbGxMaW5rSW5mby5tX2FycmF5UHJvZmlsZS5hZGRy
ZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlEKCkpOwogICAgICAgICBkb25lLmxpbmsodGhpcyk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29kZXMu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzLmNwcAppbmRleCAxOGNl
YmE2YWQ5MGI4MDhjNGUwNGZmZDE4ZjFjYjkyNjUyMmY0MjYyLi5mMDVkYmE5NjRiMmU2NzdhODkz
YjFkZDFlZmJhZGMyNGMzZTgzYTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wY29kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bj
b2Rlcy5jcHAKQEAgLTcwNyw3ICs3MDcsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jYXRjaChjb25z
dCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0aW9uKQogICAgICAgICBidWZmZXItPmZvckVh
Y2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7CiAgICAgICAgICAgICBK
U1ZhbHVlUmVncyByZWdzKHJlZ1QwKTsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0
ZXIocHJvZmlsZS5tX29wZXJhbmQsIHJlZ3MpOwotICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmls
aW5nU2l0ZShwcm9maWxlLm1fcHJvZmlsZSk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxp
bmdTaXRlKHN0YXRpY19jYXN0PFZhbHVlUHJvZmlsZSY+KHByb2ZpbGUpKTsKICAgICAgICAgfSk7
CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpAQCAtODc4LDE1ICs4NzgsMTMgQEAg
dm9pZCBKSVQ6OmVtaXRfb3BfdG9fdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3Ry
dWN0aW9uKQogewogICAgIGF1dG8gYnl0ZWNvZGUgPSBjdXJyZW50SW5zdHJ1Y3Rpb24tPmFzPE9w
VG9UaGlzPigpOwogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEobV9jb2Rl
QmxvY2spOwotICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlPiogY2FjaGVkU3RydWN0dXJl
ID0gJm1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlOworICAgIFN0cnVjdHVyZUlEKiBjYWNoZWRT
dHJ1Y3R1cmVJRCA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZUlEOwogICAgIGVtaXRHZXRW
aXJ0dWFsUmVnaXN0ZXIoYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCksIHJlZ1QxKTsKIAogICAg
IGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChyZWdUMSk7CiAKICAgICBhZGRTbG93Q2FzZShi
cmFuY2hJZk5vdFR5cGUocmVnVDEsIEZpbmFsT2JqZWN0VHlwZSkpOwotICAgIGxvYWRQdHIoY2Fj
aGVkU3RydWN0dXJlLCByZWdUMik7Ci0gICAgYWRkU2xvd0Nhc2UoYnJhbmNoVGVzdFB0cihaZXJv
LCByZWdUMikpOwotICAgIGxvYWQzMihBZGRyZXNzKHJlZ1QyLCBTdHJ1Y3R1cmU6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpLCByZWdUMik7CisgICAgbG9hZDMyKGNhY2hlZFN0cnVjdHVyZUlELCByZWdU
Mik7CiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoMzIoTm90RXF1YWwsIEFkZHJlc3MocmVnVDEsIEpT
Q2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHJlZ1QyKSk7CiB9CiAKQEAgLTkwOCw4ICs5MDYs
OCBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3Vy
cmVudEluc3RydWN0aW9uKQogICAgIGFkZFNsb3dDYXNlKGJyYW5jaElmTm90RnVuY3Rpb24oY2Fs
bGVlUmVnKSk7CiAgICAgbG9hZFB0cihBZGRyZXNzKGNhbGxlZVJlZywgSlNGdW5jdGlvbjo6b2Zm
c2V0T2ZSYXJlRGF0YSgpKSwgcmFyZURhdGFSZWcpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFRl
c3RQdHIoWmVybywgcmFyZURhdGFSZWcpKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFS
ZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSAr
IE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9y
UmVnKTsKLSAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6
Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgpKSwgc3RydWN0dXJlUmVnKTsKKyAgICBsb2FkUHRyKEFk
ZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2Nh
dGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZTo6b2Zm
c2V0T2ZBbGxvY2F0b3IoKSksIGFsbG9jYXRvclJlZyk7CisgICAgbG9hZFB0cihBZGRyZXNzKHJh
cmVEYXRhUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9m
aWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGU6Om9mZnNldE9mU3Ry
dWN0dXJlKCkpLCBzdHJ1Y3R1cmVSZWcpOwogCiAgICAgbG9hZFB0cihjYWNoZWRGdW5jdGlvbiwg
Y2FjaGVkRnVuY3Rpb25SZWcpOwogICAgIEp1bXAgaGFzU2Vlbk11bHRpcGxlQ2FsbGVlcyA9IGJy
YW5jaFB0cihFcXVhbCwgY2FjaGVkRnVuY3Rpb25SZWcsIFRydXN0ZWRJbW1QdHIoSlNDZWxsOjpz
ZWVuTXVsdGlwbGVDYWxsZWVPYmplY3RzKCkpKTsKQEAgLTkxOSw5ICs5MTcsNyBAQCB2b2lkIEpJ
VDo6ZW1pdF9vcF9jcmVhdGVfdGhpcyhjb25zdCBJbnN0cnVjdGlvbiogY3VycmVudEluc3RydWN0
aW9uKQogICAgIEp1bXBMaXN0IHNsb3dDYXNlczsKICAgICBhdXRvIGJ1dHRlcmZseSA9IFRydXN0
ZWRJbW1QdHIobnVsbHB0cik7CiAgICAgZW1pdEFsbG9jYXRlSlNPYmplY3QocmVzdWx0UmVnLCBK
SVRBbGxvY2F0b3I6OnZhcmlhYmxlKCksIGFsbG9jYXRvclJlZywgc3RydWN0dXJlUmVnLCBidXR0
ZXJmbHksIHNjcmF0Y2hSZWcsIHNsb3dDYXNlcyk7Ci0gICAgZW1pdEdldFZpcnR1YWxSZWdpc3Rl
cihjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxvYWRQdHIoQWRkcmVzcyhzY3JhdGNoUmVnLCBK
U0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkpLCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkMzIo
QWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJhcmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9j
YXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZTo6b2Zmc2V0T2ZJbmxpbmVD
YXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAgbG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmVSZWcs
IFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZzZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIGVt
aXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGFk
ZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1pdFB1dFZpcnR1YWxSZWdpc3RlcihieXRlY29k
ZS5tX2RzdC5vZmZzZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wY29kZXMzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wY29k
ZXMzMl82NC5jcHAKaW5kZXggMjVhOWM4ZjM1MGFkYzNlNjk0NDBkYWNhMzRkODI0MjJlZTRmMTgy
Yy4uOTRhMjYzMjdiM2E5OGQ5NmFkNWZlNzBiNjZmNWE4MGJlNDRmNzVhYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGNvZGVzMzJfNjQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bjb2RlczMyXzY0LmNwcApAQCAtODk5LDcgKzg5OSw3
IEBAIHZvaWQgSklUOjplbWl0X29wX2NhdGNoKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50SW5z
dHJ1Y3Rpb24pCiAgICAgICAgIGJ1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9w
ZXJhbmQmIHByb2ZpbGUpIHsKICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHJlZ3MocmVnVDEsIHJl
Z1QwKTsKICAgICAgICAgICAgIGVtaXRHZXRWaXJ0dWFsUmVnaXN0ZXIocHJvZmlsZS5tX29wZXJh
bmQsIHJlZ3MpOwotICAgICAgICAgICAgZW1pdFZhbHVlUHJvZmlsaW5nU2l0ZShwcm9maWxlLm1f
cHJvZmlsZSk7CisgICAgICAgICAgICBlbWl0VmFsdWVQcm9maWxpbmdTaXRlKHN0YXRpY19jYXN0
PFZhbHVlUHJvZmlsZSY+KHByb2ZpbGUpKTsKICAgICAgICAgfSk7CiAgICAgfQogI2VuZGlmIC8v
IEVOQUJMRShERkdfSklUKQpAQCAtMTAyMCw4ICsxMDIwLDggQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
Y3JlYXRlX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBh
ZGRTbG93Q2FzZShicmFuY2hJZk5vdEZ1bmN0aW9uKGNhbGxlZVJlZykpOwogICAgIGxvYWRQdHIo
QWRkcmVzcyhjYWxsZWVSZWcsIEpTRnVuY3Rpb246Om9mZnNldE9mUmFyZURhdGEoKSksIHJhcmVE
YXRhUmVnKTsKICAgICBhZGRTbG93Q2FzZShicmFuY2hUZXN0UHRyKFplcm8sIHJhcmVEYXRhUmVn
KSk7Ci0gICAgbG9hZDMyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9m
ZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxl
OjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2NhdG9yUmVnKTsKLSAgICBsb2FkUHRyKEFkZHJl
c3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURhdGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlv
blByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlOjpvZmZzZXRPZlN0cnVjdHVyZSgp
KSwgc3RydWN0dXJlUmVnKTsKKyAgICBsb2FkMzIoQWRkcmVzcyhyYXJlRGF0YVJlZywgRnVuY3Rp
b25SYXJlRGF0YTo6b2Zmc2V0T2ZPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpICsgT2JqZWN0QWxs
b2NhdGlvblByb2ZpbGVXaXRoUHJvdG90eXBlOjpvZmZzZXRPZkFsbG9jYXRvcigpKSwgYWxsb2Nh
dG9yUmVnKTsKKyAgICBsb2FkUHRyKEFkZHJlc3MocmFyZURhdGFSZWcsIEZ1bmN0aW9uUmFyZURh
dGE6Om9mZnNldE9mT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKSArIE9iamVjdEFsbG9jYXRpb25Q
cm9maWxlV2l0aFByb3RvdHlwZTo6b2Zmc2V0T2ZTdHJ1Y3R1cmUoKSksIHN0cnVjdHVyZVJlZyk7
CiAKICAgICBsb2FkUHRyKGNhY2hlZEZ1bmN0aW9uLCBjYWNoZWRGdW5jdGlvblJlZyk7CiAgICAg
SnVtcCBoYXNTZWVuTXVsdGlwbGVDYWxsZWVzID0gYnJhbmNoUHRyKEVxdWFsLCBjYWNoZWRGdW5j
dGlvblJlZywgVHJ1c3RlZEltbVB0cihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMo
KSkpOwpAQCAtMTAzMSw5ICsxMDMxLDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfY3JlYXRlX3RoaXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRJbnN0cnVjdGlvbikKICAgICBKdW1wTGlzdCBzbG93
Q2FzZXM7CiAgICAgYXV0byBidXR0ZXJmbHkgPSBUcnVzdGVkSW1tUHRyKG51bGxwdHIpOwogICAg
IGVtaXRBbGxvY2F0ZUpTT2JqZWN0KHJlc3VsdFJlZywgSklUQWxsb2NhdG9yOjp2YXJpYWJsZSgp
LCBhbGxvY2F0b3JSZWcsIHN0cnVjdHVyZVJlZywgYnV0dGVyZmx5LCBzY3JhdGNoUmVnLCBzbG93
Q2FzZXMpOwotICAgIGVtaXRMb2FkUGF5bG9hZChjYWxsZWUsIHNjcmF0Y2hSZWcpOwotICAgIGxv
YWRQdHIoQWRkcmVzcyhzY3JhdGNoUmVnLCBKU0Z1bmN0aW9uOjpvZmZzZXRPZlJhcmVEYXRhKCkp
LCBzY3JhdGNoUmVnKTsKLSAgICBsb2FkMzIoQWRkcmVzcyhzY3JhdGNoUmVnLCBGdW5jdGlvblJh
cmVEYXRhOjpvZmZzZXRPZk9iamVjdEFsbG9jYXRpb25Qcm9maWxlKCkgKyBPYmplY3RBbGxvY2F0
aW9uUHJvZmlsZTo6b2Zmc2V0T2ZJbmxpbmVDYXBhY2l0eSgpKSwgc2NyYXRjaFJlZyk7CisgICAg
bG9hZDgoQWRkcmVzcyhzdHJ1Y3R1cmVSZWcsIFN0cnVjdHVyZTo6aW5saW5lQ2FwYWNpdHlPZmZz
ZXQoKSksIHNjcmF0Y2hSZWcpOwogICAgIGVtaXRJbml0aWFsaXplSW5saW5lU3RvcmFnZShyZXN1
bHRSZWcsIHNjcmF0Y2hSZWcpOwogICAgIGFkZFNsb3dDYXNlKHNsb3dDYXNlcyk7CiAgICAgZW1p
dFN0b3JlQ2VsbChieXRlY29kZS5tX2RzdC5vZmZzZXQoKSwgcmVzdWx0UmVnKTsKQEAgLTEwNDMs
NyArMTA0MSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RvX3RoaXMoY29uc3QgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRJbnN0cnVjdGlvbikKIHsKICAgICBhdXRvIGJ5dGVjb2RlID0gY3VycmVudEluc3Ry
dWN0aW9uLT5hczxPcFRvVGhpcz4oKTsKICAgICBhdXRvJiBtZXRhZGF0YSA9IGJ5dGVjb2RlLm1l
dGFkYXRhKG1fY29kZUJsb2NrKTsKLSAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZT4qIGNh
Y2hlZFN0cnVjdHVyZSA9ICZtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZTsKKyAgICBTdHJ1Y3R1
cmVJRCogY2FjaGVkU3RydWN0dXJlSUQgPSAmbWV0YWRhdGEubV9jYWNoZWRTdHJ1Y3R1cmVJRDsK
ICAgICBpbnQgdGhpc1JlZ2lzdGVyID0gYnl0ZWNvZGUubV9zcmNEc3Qub2Zmc2V0KCk7CiAKICAg
ICBlbWl0TG9hZCh0aGlzUmVnaXN0ZXIsIHJlZ1QzLCByZWdUMik7CkBAIC0xMDUxLDcgKzEwNDks
NyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90b190aGlzKGNvbnN0IEluc3RydWN0aW9uKiBjdXJyZW50
SW5zdHJ1Y3Rpb24pCiAgICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RDZWxsKHJlZ1QzKSk7CiAg
ICAgYWRkU2xvd0Nhc2UoYnJhbmNoSWZOb3RUeXBlKHJlZ1QyLCBGaW5hbE9iamVjdFR5cGUpKTsK
ICAgICBsb2FkUHRyKEFkZHJlc3MocmVnVDIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSks
IHJlZ1QwKTsKLSAgICBsb2FkUHRyKGNhY2hlZFN0cnVjdHVyZSwgcmVnVDIpOworICAgIGxvYWQz
MihjYWNoZWRTdHJ1Y3R1cmVJRCwgcmVnVDIpOwogICAgIGFkZFNsb3dDYXNlKGJyYW5jaFB0cihO
b3RFcXVhbCwgcmVnVDAsIHJlZ1QyKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDVhMDAzYWFmMzAwMzFmZDM2MWRmNDBiN2RlN2EyNmIy
NTZmOGVjZDguLjEyYjc4YWFkZjQ1ODlkZDQ4M2NjODc5MmQyZDYzODYzNTE5OTBlZjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTY5NSw3ICsx
Njk1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2hB
bmRWYWx1ZVByb2ZpbGUoRXhlY1N0YXRlKiBleGVjLAogICAgIGF1dG8gYnl0ZWNvZGUgPSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmF0KGJ5dGVjb2RlSW5kZXgpLT5hczxPcENhdGNoPigpOwog
ICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoY29kZUJsb2NrKTsKICAgICBt
ZXRhZGF0YS5tX2J1ZmZlci0+Zm9yRWFjaChbJl0gKFZhbHVlUHJvZmlsZUFuZE9wZXJhbmQmIHBy
b2ZpbGUpIHsKLSAgICAgICAgcHJvZmlsZS5tX3Byb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPnVuY2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7
CisgICAgICAgIHByb2ZpbGUubV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPnVu
Y2hlY2tlZFIocHJvZmlsZS5tX29wZXJhbmQpLmpzVmFsdWUoKSk7CiAgICAgfSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKaW5kZXggNTE5YWQ3YWVjMzY0YWJhOTI2NjAxNGMyZDNlYjQ2MmQyNTliMzcx
My4uOWQ2MjE0ODFmNzc0NzRlZmI4MzFiZDRlNWYxZjU4MjI5ZTMzMjU1NiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKQEAgLTU4Myw3ICs1
ODMsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwocmVnVDAs
IGJhc2VWUmVnKTsKICAgICAKICAgICBpZiAoKmlkZW50ID09IG1fdm0tPnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCAmJiBzaG91bGRFbWl0UHJvZmlsaW5nKCkpIHsKLSAgICAgICAgSnVtcCBub3RBcnJh
eUxlbmd0aE1vZGUgPSBicmFuY2g4KE5vdEVxdWFsLCBBYnNvbHV0ZUFkZHJlc3MoJm1ldGFkYXRh
Lm1fbW9kZSksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6
QXJyYXlMZW5ndGgpKSk7CisgICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhNb2RlID0gYnJhbmNo
OChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2Rl
KSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PHVpbnQ4X3Q+KEdldEJ5SWRNb2RlOjpBcnJheUxl
bmd0aCkpKTsKICAgICAgICAgZW1pdEFycmF5UHJvZmlsaW5nU2l0ZVdpdGhDZWxsKHJlZ1QwLCBy
ZWdUMSwgJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUpOwogICAgICAgICBub3RBcnJheUxlbmd0aE1vZGUubGluayh0aGlzKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNw
cAppbmRleCBlMmRhMTE1ZWNkM2NkZjEzZTlkYjFkMDc0NWRlMzdiZWY4ZGM0Mjg3Li5jMTUxZWFm
N2Q0YzgxYTY4MzE0N2Y2OTcyZGMyYmRhNzZjMzk4MTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKQEAgLTU4MCw3ICs1
ODAsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF9nZXRfYnlfaWQoY29uc3QgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRJbnN0cnVjdGlvbikKICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoYmFzZSwg
cmVnVDEpOwogCiAgICAgaWYgKCppZGVudCA9PSBtX3ZtLT5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgg
JiYgc2hvdWxkRW1pdFByb2ZpbGluZygpKSB7Ci0gICAgICAgIEp1bXAgbm90QXJyYXlMZW5ndGhN
b2RlID0gYnJhbmNoOChOb3RFcXVhbCwgQWJzb2x1dGVBZGRyZXNzKCZtZXRhZGF0YS5tX21vZGUp
LCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8dWludDhfdD4oR2V0QnlJZE1vZGU6OkFycmF5TGVu
Z3RoKSkpOworICAgICAgICBKdW1wIG5vdEFycmF5TGVuZ3RoTW9kZSA9IGJyYW5jaDgoTm90RXF1
YWwsIEFic29sdXRlQWRkcmVzcygmbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSksIFRydXN0
ZWRJbW0zMihzdGF0aWNfY2FzdDx1aW50OF90PihHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGgpKSk7
CiAgICAgICAgIGVtaXRBcnJheVByb2ZpbGluZ1NpdGVXaXRoQ2VsbChyZWdUMCwgcmVnVDIsICZt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJyYXlQcm9maWxlKTsKICAg
ICAgICAgbm90QXJyYXlMZW5ndGhNb2RlLmxpbmsodGhpcyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggMmU5MGM3MDFkYTFl
Yzc1YjE4MjJhYTZkN2IzYmU3Yzc0MjZmMjViNy4uMjU0ZmNkY2RkYWZkNjI0YzA3NTgwMTA3NmM4
MDdkODc3N2YxZmU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC03NDAsMTkgKzc0MCwyNCBAQCBzdGF0aWMgdm9pZCBzZXR1cEdldEJ5
SWRQcm90b3R5cGVDYWNoZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgY29uc3QgSW5zdHJ1Y3Rp
bwogICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOwogCiAg
ICAgaWYgKHNsb3QuaXNVbnNldCgpKSB7Ci0gICAgICAgIG1ldGFkYXRhLm1fbW9kZSA9IEdldEJ5
SWRNb2RlOjpVbnNldDsKKyAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9IEdl
dEJ5SWRNb2RlOjpVbnNldDsKICAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEudW5zZXRN
b2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIEFTU0VSVChzbG90LmlzVmFsdWUoKSk7CiAKLSAgICBtZXRhZGF0YS5tX21vZGUgPSBH
ZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOworICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PSBHZXRCeUlkTW9kZTo6UHJvdG9Mb2FkOyAvLyBUaGlzIG11c3QgYmUgZmlyc3Qgc2V0LiBJbiA2
NGJpdCBhcmNoaXRlY3R1cmUsIHRoaXMgZmllbGQgaXMgc2hhcmVkIHdpdGggcHJvdG9Mb2FkTW9k
ZS5jYWNoZWRTbG90LgogICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLnByb3RvTG9hZE1vZGUu
c3RydWN0dXJlSUQgPSBzdHJ1Y3R1cmUtPmlkKCk7CiAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAgbWV0YWRhdGEubV9t
b2RlTWV0YWRhdGEucHJvdG9Mb2FkTW9kZS5jYWNoZWRTbG90ID0gc2xvdC5zbG90QmFzZSgpOwog
ICAgIC8vIFdlIGtub3cgdGhhdCB0aGlzIHBvaW50ZXIgd2lsbCByZW1haW4gdmFsaWQgYmVjYXVz
ZSBpdCB3aWxsIGJlIGNsZWFyZWQgYnkgZWl0aGVyIGEgd2F0Y2hwb2ludCBmaXJlIG9yCiAgICAg
Ly8gZHVyaW5nIEdDIHdoZW4gd2UgY2xlYXIgdGhlIExMSW50IGNhY2hlcy4KICAgICBtZXRhZGF0
YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZFNsb3QgPSBzbG90LnNsb3RCYXNl
KCk7CisKKyAgICBBU1NFUlQobWV0YWRhdGEubV9tb2RlTWV0YWRhdGEubW9kZSA9PSBHZXRCeUlk
TW9kZTo6UHJvdG9Mb2FkKTsKKyAgICBBU1NFUlQoIW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhp
dENvdW50Rm9yTExJbnRDYWNoaW5nKTsKKyAgICBBU1NFUlQobWV0YWRhdGEubV9tb2RlTWV0YWRh
dGEucHJvdG9Mb2FkTW9kZS5zdHJ1Y3R1cmVJRCA9PSBzdHJ1Y3R1cmUtPmlkKCkpOworICAgIEFT
U0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRNb2RlLmNhY2hlZE9mZnNldCA9
PSBvZmZzZXQpOworICAgIEFTU0VSVChtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5wcm90b0xvYWRN
b2RlLmNhY2hlZFNsb3QgPT0gc2xvdC5zbG90QmFzZSgpKTsKIH0KIAogCkBAIC03NzUsOCArNzgw
LDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCkKICAgICAgICAg
JiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIFN0cnVjdHVy
ZUlEIG9sZFN0cnVjdHVyZUlEOwotICAgICAgICAgICAgYXV0byBtb2RlID0gbWV0YWRhdGEubV9t
b2RlOwotICAgICAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1l
dGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUpIHsKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZE1v
ZGU6OkRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgb2xkU3RydWN0dXJlSUQgPSBtZXRhZGF0YS5t
X21vZGVNZXRhZGF0YS5kZWZhdWx0TW9kZS5zdHJ1Y3R1cmVJRDsKICAgICAgICAgICAgICAgICBi
cmVhazsKQEAgLTgwNCwxMiArODA4LDEyIEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9nZXRfYnlfaWQpCiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0
cnVjdHVyZSh2bSk7CiAgICAgICAgIGlmIChzbG90LmlzVmFsdWUoKSAmJiBzbG90LnNsb3RCYXNl
KCkgPT0gYmFzZVZhbHVlKSB7CiAgICAgICAgICAgICAvLyBTdGFydCBvdXQgYnkgY2xlYXJpbmcg
b3V0IHRoZSBvbGQgY2FjaGUuCi0gICAgICAgICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlk
TW9kZTo6RGVmYXVsdDsKKyAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLm1vZGUg
PSBHZXRCeUlkTW9kZTo6RGVmYXVsdDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFk
YXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gMDsKICAgICAgICAgICAgIG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hlZE9mZnNldCA9IDA7CiAKICAgICAgICAgICAg
IC8vIFByZXZlbnQgdGhlIHByb3RvdHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAg
ICAgICAgICAgbWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7CisgICAgICAg
ICAgICBtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5oaXRDb3VudEZvckxMSW50Q2FjaGluZyA9IDA7
CiAgICAgICAgIAogICAgICAgICAgICAgaWYgKHN0cnVjdHVyZS0+cHJvcGVydHlBY2Nlc3Nlc0Fy
ZUNhY2hlYWJsZSgpCiAgICAgICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+bmVlZEltcHVyZVBy
b3BlcnR5V2F0Y2hwb2ludCgpKSB7CkBAIC04MjAsMjEgKzgyNCwyMiBAQCBMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1f
bW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLnN0cnVjdHVyZUlEID0gc3RydWN0dXJlLT5pZCgpOwog
ICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmRlZmF1bHRNb2RlLmNhY2hl
ZE9mZnNldCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0g
ZWxzZSBpZiAoVU5MSUtFTFkobWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZyAmJiAo
c2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpKSkgeworICAgICAgICB9IGVsc2UgaWYg
KFVOTElLRUxZKG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5n
ICYmIChzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpKSB7CiAgICAgICAgICAgICBB
U1NFUlQoc2xvdC5zbG90QmFzZSgpICE9IGJhc2VWYWx1ZSk7CiAKLSAgICAgICAgICAgIGlmICgh
KC0tbWV0YWRhdGEubV9oaXRDb3VudEZvckxMSW50Q2FjaGluZykpCisgICAgICAgICAgICBpZiAo
ISgtLW1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmhpdENvdW50Rm9yTExJbnRDYWNoaW5nKSkKICAg
ICAgICAgICAgICAgICBzZXR1cEdldEJ5SWRQcm90b3R5cGVDYWNoZShleGVjLCB2bSwgcGMsIG1l
dGFkYXRhLCBiYXNlQ2VsbCwgc2xvdCwgaWRlbnQpOwogICAgICAgICB9CiAgICAgfSBlbHNlIGlm
ICghTExJTlRfQUxXQVlTX0FDQ0VTU19TTE9XCiAgICAgICAgICYmIGlzSlNBcnJheShiYXNlVmFs
dWUpCiAgICAgICAgICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewotICAg
ICAgICBtZXRhZGF0YS5tX21vZGUgPSBHZXRCeUlkTW9kZTo6QXJyYXlMZW5ndGg7Ci0gICAgICAg
IG5ldyAoJm1ldGFkYXRhLm1fbW9kZU1ldGFkYXRhLmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2Zp
bGUpIEFycmF5UHJvZmlsZShjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KHBjKSk7CisgICAgICAg
IENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIoY29kZUJsb2NrLT5tX2xvY2spOworICAgICAgICBt
ZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5tb2RlID0gR2V0QnlJZE1vZGU6OkFycmF5TGVuZ3RoOwor
ICAgICAgICBuZXcgKCZtZXRhZGF0YS5tX21vZGVNZXRhZGF0YS5hcnJheUxlbmd0aE1vZGUuYXJy
YXlQcm9maWxlKSBBcnJheVByb2ZpbGU7CiAgICAgICAgIG1ldGFkYXRhLm1fbW9kZU1ldGFkYXRh
LmFycmF5TGVuZ3RoTW9kZS5hcnJheVByb2ZpbGUub2JzZXJ2ZVN0cnVjdHVyZShiYXNlVmFsdWUu
YXNDZWxsKCktPnN0cnVjdHVyZSh2bSkpOwogCiAgICAgICAgIC8vIFByZXZlbnQgdGhlIHByb3Rv
dHlwZSBjYWNoZSBmcm9tIGV2ZXIgaGFwcGVuaW5nLgotICAgICAgICBtZXRhZGF0YS5tX2hpdENv
dW50Rm9yTExJbnRDYWNoaW5nID0gMDsKKyAgICAgICAgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEu
aGl0Q291bnRGb3JMTEludENhY2hpbmcgPSAwOwogICAgIH0KIAogICAgIExMSU5UX1BST0ZJTEVf
VkFMVUUocmVzdWx0KTsKQEAgLTE1MDIsMTIgKzE1MDcsNyBAQCBpbmxpbmUgU2xvd1BhdGhSZXR1
cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIENvZGVTcGVjaWFsaXphdGlv
bktpbgogICAgICAgICAgICAgICAgIENvZGVCbG9jayogY2FsbGVyQ29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CiAKICAgICAgICAgICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2Vy
KGNhbGxlckNvZGVCbG9jay0+bV9sb2NrKTsKLQotICAgICAgICAgICAgICAgIGlmIChjYWxsTGlu
a0luZm8tPmlzT25MaXN0KCkpCi0gICAgICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVt
b3ZlKCk7Ci0gICAgICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KHZtLCBjYWxs
ZXJDb2RlQmxvY2ssIGludGVybmFsRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgIGNhbGxMaW5r
SW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KHZtLCBjYWxsZXJDb2RlQmxvY2ssIGludGVybmFsRnVu
Y3Rpb24pOwotICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQg
PSBjb2RlUHRyOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+bGluayh2bSwgY2FsbGVy
Q29kZUJsb2NrLCBpbnRlcm5hbEZ1bmN0aW9uLCBjb2RlUHRyKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgYXNzZXJ0SXNUYWdnZWRXaXRoKGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgSlNFbnRyeVB0clRhZyk7CkBAIC0xNTUwLDEyICsxNTUwLDcgQEAgaW5saW5lIFNsb3dQYXRo
UmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW4KICAgICAgICAgQ29kZUJsb2NrKiBjYWxsZXJDb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKIAogICAgICAgICBDb25jdXJyZW50SlNMb2NrZXIgbG9ja2VyKGNhbGxlckNvZGVC
bG9jay0+bV9sb2NrKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25M
aXN0KCkpCi0gICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOwotICAgICAgICBjYWxs
TGlua0luZm8tPmNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywgY2FsbGVlKTsKLSAgICAg
ICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQodm0sIGNhbGxlckNvZGVCbG9jaywg
Y2FsbGVlKTsKLSAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQ
dHI7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGluayh2bSwgY2FsbGVyQ29kZUJsb2NrLCBjYWxs
ZWUsIGNvZGVQdHIpOwogICAgICAgICBpZiAoY29kZUJsb2NrKQogICAgICAgICAgICAgY29kZUJs
b2NrLT5saW5rSW5jb21pbmdDYWxsKGV4ZWMsIGNhbGxMaW5rSW5mbyk7CiAgICAgfQpAQCAtMTky
OCw3ICsxOTIzLDcgQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfY2F0
Y2gpCiAgICAgYXV0byBieXRlY29kZSA9IHBjLT5hczxPcENhdGNoPigpOwogICAgIGF1dG8mIG1l
dGFkYXRhID0gYnl0ZWNvZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgbWV0YWRhdGEubV9idWZmZXIt
PmZvckVhY2goWyZdIChWYWx1ZVByb2ZpbGVBbmRPcGVyYW5kJiBwcm9maWxlKSB7Ci0gICAgICAg
IHByb2ZpbGUubV9wcm9maWxlLm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51
bmNoZWNrZWRSKHByb2ZpbGUubV9vcGVyYW5kKS5qc1ZhbHVlKCkpOworICAgICAgICBwcm9maWxl
Lm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRSKHByb2ZpbGUu
bV9vcGVyYW5kKS5qc1ZhbHVlKCkpOwogICAgIH0pOwogCiAgICAgTExJTlRfRU5EKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlcjMy
XzY0LmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
MzJfNjQuYXNtCmluZGV4IGM3N2ZiN2UzNmJjZGU1M2VhMzRhZGU3ZTQ4MzkwNmFlYzViZjM2MzIu
LmMyZTYwYWI2ZGZiMGIyZDhkODg2ODc1MGNmNThiZTlmMzM1YTEwZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQuYXNtCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyMzJfNjQu
YXNtCkBAIC03NDUsNyArNzQ1LDcgQEAgbGxpbnRPcFdpdGhNZXRhZGF0YShvcF90b190aGlzLCBP
cFRvVGhpcywgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLAogICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCiAgICAgYmJuZXEgSlNDZWxsOjptX3R5cGVb
dDBdLCBGaW5hbE9iamVjdFR5cGUsIC5vcFRvVGhpc1Nsb3cKICAgICBtZXRhZGF0YSh0MiwgdDMp
Ci0gICAgbG9hZHAgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIHQy
CisgICAgbG9hZGkgT3BUb1RoaXM6Ok1ldGFkYXRhOjptX2NhY2hlZFN0cnVjdHVyZUlEW3QyXSwg
dDIKICAgICBiaW5lcSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MiwgLm9wVG9UaGlzU2xv
dwogICAgIGRpc3BhdGNoKCkKIApAQCAtMTM0NCw3ICsxMzQ0LDcgQEAgZW5kKQogCiBsbGludE9w
V2l0aE1ldGFkYXRhKG9wX2dldF9ieV9pZCwgT3BHZXRCeUlkLCBtYWNybyAoc2l6ZSwgZ2V0LCBk
aXNwYXRjaCwgbWV0YWRhdGEsIHJldHVybikKICAgICBtZXRhZGF0YSh0NSwgdDApCi0gICAgbG9h
ZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlW3Q1XSwgdDEKKyAgICBsb2FkYiBPcEdldEJ5
SWQ6Ok1ldGFkYXRhOjptX21vZGVNZXRhZGF0YS5tb2RlW3Q1XSwgdDEKICAgICBnZXQobV9iYXNl
LCB0MCkKIAogLm9wR2V0QnlJZFByb3RvTG9hZDoKQEAgLTE4MjMsNyArMTgyMyw3IEBAIG1hY3Jv
IGFycmF5UHJvZmlsZUZvckNhbGwob3Bjb2RlU3RydWN0LCBnZXR1KQogICAgIGJpbmVxIFRoaXNB
cmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgQ2VsbFRhZywgLmRvbmUKICAg
ICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0
MAogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQwCi0gICAgc3RvcmVpIHQw
LCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbGFzdFNlZW5TdHJ1
Y3R1cmVJRFt0NV0KKyAgICBzdG9yZWkgdDAsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1XQogLmRv
bmU6CiBlbmQKIApAQCAtMTgzNiw3ICsxODM2LDcgQEAgbWFjcm8gY29tbW9uQ2FsbE9wKG9wY29k
ZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAg
ICAgICAgZW5kLCBtZXRhZGF0YSkKIAogICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQotICAgICAg
ICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLmNhbGxlZVt0
NV0sIHQyCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlu
a0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0MgogICAgICAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChzaXplLCB0MCwgQ2VsbFRhZywgdDMsIC5v
cENhbGxTbG93KQogICAgICAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CiAgICAgICAgIGdl
dHUoc2l6ZSwgb3Bjb2RlU3RydWN0LCBtX2FyZ3YsIHQzKQpAQCAtMTg0OSw4ICsxODQ5LDggQEAg
bWFjcm8gY29tbW9uQ2FsbE9wKG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHBy
ZXBhcmVDYWxsLCBwcm9sb2d1ZSkKICAgICAgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFt0M10KICAgICAgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09m
ZnNldFt0M10KICAgICAgICAgbW92ZSB0Mywgc3AKLSAgICAgICAgcHJlcGFyZUNhbGwoJW9wY29k
ZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5lQ29kZVRhcmdldFt0NV0s
IHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCi0gICAgICAgIGNhbGxUYXJnZXRGdW5jdGlvbihz
aXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1f
Y2FsbExpbmtJbmZvLm1hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgSlNFbnRyeVB0clRhZykKKyAgICAg
ICAgcHJlcGFyZUNhbGwoJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5t
X21hY2hpbmVDb2RlVGFyZ2V0W3Q1XSwgdDIsIHQzLCB0NCwgSlNFbnRyeVB0clRhZykKKyAgICAg
ICAgY2FsbFRhcmdldEZ1bmN0aW9uKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsICVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIEpTRW50cnlQdHJUYWcpCiAKICAgICAub3BDYWxsU2xvdzoKICAgICAgICAgc2xvd1BhdGhG
b3JDYWxsKHNpemUsIG9wY29kZVN0cnVjdCwgZGlzcGF0Y2gsIHNsb3dQYXRoLCBwcmVwYXJlQ2Fs
bCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyNjQuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXI2NC5hc20KaW5kZXggYzgwNzQzNTg0NTA5Y2ZlZTMwOTkzYTZlYjExMjU1ZDIxMzM1MWM2
Mi4uODExOWRhMmNiZmY3YWI0ODIwMzJiNzJhZDMzN2I1MWFiZmIxOWMzNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20KKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXI2NC5hc20K
QEAgLTcwMSwxMCArNzAxLDEwIEBAIGxsaW50T3BXaXRoTWV0YWRhdGEob3BfdG9fdGhpcywgT3BU
b1RoaXMsIG1hY3JvIChzaXplLCBnZXQsIGRpc3BhdGNoLCBtZXRhZGF0YSwKICAgICBsb2FkcSBb
Y2ZyLCB0MCwgOF0sIHQwCiAgICAgYnRxbnogdDAsIHRhZ01hc2ssIC5vcFRvVGhpc1Nsb3cKICAg
ICBiYm5lcSBKU0NlbGw6Om1fdHlwZVt0MF0sIEZpbmFsT2JqZWN0VHlwZSwgLm9wVG9UaGlzU2xv
dwotICAgIGxvYWRTdHJ1Y3R1cmVXaXRoU2NyYXRjaCh0MCwgdDEsIHQyLCB0MykKKyAgICBsb2Fk
aSBKU0NlbGw6Om1fc3RydWN0dXJlSURbdDBdLCB0MQogICAgIG1ldGFkYXRhKHQyLCB0MykKLSAg
ICBsb2FkcCBPcFRvVGhpczo6TWV0YWRhdGE6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgdDIKLSAg
ICBicG5lcSB0MSwgdDIsIC5vcFRvVGhpc1Nsb3cKKyAgICBsb2FkaSBPcFRvVGhpczo6TWV0YWRh
dGE6Om1fY2FjaGVkU3RydWN0dXJlSURbdDJdLCB0MgorICAgIGJpbmVxIHQxLCB0MiwgLm9wVG9U
aGlzU2xvdwogICAgIGRpc3BhdGNoKCkKIAogLm9wVG9UaGlzU2xvdzoKQEAgLTEyODgsNyArMTI4
OCw3IEBAIGVuZCkKIAogbGxpbnRPcFdpdGhNZXRhZGF0YShvcF9nZXRfYnlfaWQsIE9wR2V0QnlJ
ZCwgbWFjcm8gKHNpemUsIGdldCwgZGlzcGF0Y2gsIG1ldGFkYXRhLCByZXR1cm4pCiAgICAgbWV0
YWRhdGEodDIsIHQxKQotICAgIGxvYWRiIE9wR2V0QnlJZDo6TWV0YWRhdGE6Om1fbW9kZVt0Ml0s
IHQxCisgICAgbG9hZGIgT3BHZXRCeUlkOjpNZXRhZGF0YTo6bV9tb2RlTWV0YWRhdGEubW9kZVt0
Ml0sIHQxCiAgICAgZ2V0KG1fYmFzZSwgdDApCiAgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZUNl
bGwoc2l6ZSwgdDAsIHQzLCAub3BHZXRCeUlkU2xvdykKIApAQCAtMTkxOCw3ICsxOTE4LDcgQEAg
bWFjcm8gYXJyYXlQcm9maWxlRm9yQ2FsbChvcGNvZGVTdHJ1Y3QsIGdldHUpCiAgICAgbG9hZHEg
VGhpc0FyZ3VtZW50T2Zmc2V0W2NmciwgdDMsIDhdLCB0MAogICAgIGJ0cW56IHQwLCB0YWdNYXNr
LCAuZG9uZQogICAgIGxvYWRpIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVJRFt0MF0sIHQzCi0gICAgc3Rv
cmVpIHQzLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fYXJyYXlQcm9maWxlLm1fbGFzdFNl
ZW5TdHJ1Y3R1cmVJRFt0NV0KKyAgICBzdG9yZWkgdDMsICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0
YTo6bV9jYWxsTGlua0luZm8ubV9hcnJheVByb2ZpbGUubV9sYXN0U2VlblN0cnVjdHVyZUlEW3Q1
XQogLmRvbmU6CiBlbmQKIApAQCAtMTkzMSw3ICsxOTMxLDcgQEAgbWFjcm8gY29tbW9uQ2FsbE9w
KG9wY29kZU5hbWUsIHNsb3dQYXRoLCBvcGNvZGVTdHJ1Y3QsIHByZXBhcmVDYWxsLCBwcm9sb2d1
ZSkKICAgICAgICAgZW5kLCBtZXRhZGF0YSkKIAogICAgICAgICBnZXQobV9jYWxsZWUsIHQwKQot
ICAgICAgICBsb2FkcCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6Om1fY2FsbExpbmtJbmZvLmNh
bGxlZVt0NV0sIHQyCisgICAgICAgIGxvYWRwICVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9j
YWxsTGlua0luZm8ubV9jYWxsZWVPckxhc3RTZWVuQ2FsbGVlV2l0aExpbmtCaXRbdDVdLCB0Mgog
ICAgICAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHNpemUsIHQwLCB0MykKICAgICAgICAgYnFu
ZXEgdDMsIHQyLCAub3BDYWxsU2xvdwogICAgICAgICBnZXR1KHNpemUsIG9wY29kZVN0cnVjdCwg
bV9hcmd2LCB0MykKQEAgLTE5NDMsOCArMTk0Myw4IEBAIG1hY3JvIGNvbW1vbkNhbGxPcChvcGNv
ZGVOYW1lLCBzbG93UGF0aCwgb3Bjb2RlU3RydWN0LCBwcmVwYXJlQ2FsbCwgcHJvbG9ndWUpCiAg
ICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCiAgICAgICAg
IHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCiAgICAgICAgIG1v
dmUgdDMsIHNwCi0gICAgICAgIHByZXBhcmVDYWxsKCVvcGNvZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6
bV9jYWxsTGlua0luZm8ubWFjaGluZUNvZGVUYXJnZXRbdDVdLCB0MiwgdDMsIHQ0LCBKU0VudHJ5
UHRyVGFnKQotICAgICAgICBjYWxsVGFyZ2V0RnVuY3Rpb24oc2l6ZSwgb3Bjb2RlU3RydWN0LCBk
aXNwYXRjaCwgJW9wY29kZVN0cnVjdCU6Ok1ldGFkYXRhOjptX2NhbGxMaW5rSW5mby5tYWNoaW5l
Q29kZVRhcmdldFt0NV0sIEpTRW50cnlQdHJUYWcpCisgICAgICAgIHByZXBhcmVDYWxsKCVvcGNv
ZGVTdHJ1Y3QlOjpNZXRhZGF0YTo6bV9jYWxsTGlua0luZm8ubV9tYWNoaW5lQ29kZVRhcmdldFt0
NV0sIHQyLCB0MywgdDQsIEpTRW50cnlQdHJUYWcpCisgICAgICAgIGNhbGxUYXJnZXRGdW5jdGlv
bihzaXplLCBvcGNvZGVTdHJ1Y3QsIGRpc3BhdGNoLCAlb3Bjb2RlU3RydWN0JTo6TWV0YWRhdGE6
Om1fY2FsbExpbmtJbmZvLm1fbWFjaGluZUNvZGVUYXJnZXRbdDVdLCBKU0VudHJ5UHRyVGFnKQog
CiAgICAgLm9wQ2FsbFNsb3c6CiAgICAgICAgIHNsb3dQYXRoRm9yQ2FsbChzaXplLCBvcGNvZGVT
dHJ1Y3QsIGRpc3BhdGNoLCBzbG93UGF0aCwgcHJlcGFyZUNhbGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA4NTQ0MTg4ODM2
ZmU2ODljZDhhNjdkMmJmZjQzNzI1MjE3M2NmNWJlLi40ZTc4YTQ4ZDZkMTllYjliMDZkM2M5ZWQw
NzRlOTU4MTEyZDA4YTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTI0Miw3ICsyNDIsNyBAQCBTTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX3RoaXMpCiAgICAgICAgICAgICBjYWNoZWRDYWxsZWUuc2V0V2l0aG91
dFdyaXRlQmFycmllcihKU0NlbGw6OnNlZW5NdWx0aXBsZUNhbGxlZU9iamVjdHMoKSk7CiAKICAg
ICAgICAgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0gYnl0ZWNvZGUubV9pbmxpbmVDYXBhY2l0eTsK
LSAgICAgICAgT2JqZWN0QWxsb2NhdGlvblByb2ZpbGUqIGFsbG9jYXRpb25Qcm9maWxlID0gY29u
c3RydWN0b3ItPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5l
Q2FwYWNpdHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOworICAgICAgICBPYmplY3RBbGxv
Y2F0aW9uUHJvZmlsZVdpdGhQcm90b3R5cGUqIGFsbG9jYXRpb25Qcm9maWxlID0gY29uc3RydWN0
b3ItPmVuc3VyZVJhcmVEYXRhQW5kQWxsb2NhdGlvblByb2ZpbGUoZXhlYywgaW5saW5lQ2FwYWNp
dHkpLT5vYmplY3RBbGxvY2F0aW9uUHJvZmlsZSgpOwogICAgICAgICB0aHJvd1Njb3BlLnJlbGVh
c2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGFs
bG9jYXRpb25Qcm9maWxlLT5zdHJ1Y3R1cmUoKTsKICAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKTsKQEAgLTI3MiwxNiArMjcyLDE3IEBAIFNMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF90b190aGlzKQogICAgIGF1dG8mIG1ldGFkYXRhID0gYnl0ZWNv
ZGUubWV0YWRhdGEoZXhlYyk7CiAgICAgSlNWYWx1ZSB2MSA9IEdFVChieXRlY29kZS5tX3NyY0Rz
dCkuanNWYWx1ZSgpOwogICAgIGlmICh2MS5pc0NlbGwoKSkgewotICAgICAgICBTdHJ1Y3R1cmUq
IG15U3RydWN0dXJlID0gdjEuYXNDZWxsKCktPnN0cnVjdHVyZSh2bSk7Ci0gICAgICAgIFN0cnVj
dHVyZSogb3RoZXJTdHJ1Y3R1cmUgPSBtZXRhZGF0YS5tX2NhY2hlZFN0cnVjdHVyZS5nZXQoKTsK
LSAgICAgICAgaWYgKG15U3RydWN0dXJlICE9IG90aGVyU3RydWN0dXJlKSB7Ci0gICAgICAgICAg
ICBpZiAob3RoZXJTdHJ1Y3R1cmUpCisgICAgICAgIFN0cnVjdHVyZUlEIG15U3RydWN0dXJlSUQg
PSB2MS5hc0NlbGwoKS0+c3RydWN0dXJlSUQoKTsKKyAgICAgICAgU3RydWN0dXJlSUQgb3RoZXJT
dHJ1Y3R1cmVJRCA9IG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQ7CisgICAgICAgIGlmICht
eVN0cnVjdHVyZUlEICE9IG90aGVyU3RydWN0dXJlSUQpIHsKKyAgICAgICAgICAgIGlmIChvdGhl
clN0cnVjdHVyZUlEKQogICAgICAgICAgICAgICAgIG1ldGFkYXRhLm1fdG9UaGlzU3RhdHVzID0g
VG9UaGlzQ29uZmxpY3RlZDsKLSAgICAgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0dXJl
LnNldCh2bSwgZXhlYy0+Y29kZUJsb2NrKCksIG15U3RydWN0dXJlKTsKKyAgICAgICAgICAgIG1l
dGFkYXRhLm1fY2FjaGVkU3RydWN0dXJlSUQgPSBteVN0cnVjdHVyZUlEOworICAgICAgICAgICAg
dm0uaGVhcC53cml0ZUJhcnJpZXIoZXhlYy0+Y29kZUJsb2NrKCksIHZtLmdldFN0cnVjdHVyZSht
eVN0cnVjdHVyZUlEKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBtZXRhZGF0
YS5tX3RvVGhpc1N0YXR1cyA9IFRvVGhpc0NvbmZsaWN0ZWQ7Ci0gICAgICAgIG1ldGFkYXRhLm1f
Y2FjaGVkU3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgIG1ldGFkYXRhLm1fY2FjaGVkU3RydWN0
dXJlSUQgPSAwOwogICAgIH0KICAgICAvLyBOb3RlOiBXZSBvbmx5IG5lZWQgdG8gZG8gdGhpcyB2
YWx1ZSBwcm9maWxpbmcgaGVyZSBvbiB0aGUgc2xvdyBwYXRoLiBUaGUgZmFzdCBwYXRoCiAgICAg
Ly8ganVzdCByZXR1cm5zIHRoZSBpbnB1dCB0byB0b190aGlzIGlmIHRoZSBzdHJ1Y3R1cmUgY2hl
Y2sgc3VjY2VlZHMuIElmIHRoZSBzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUmFyZURhdGEuaAppbmRleCBhNmE2ZGYwMGQ0NTQ3ODk4MDE5MDRm
ZjVlZWNlYTIyYmRkYzc5MjFjLi4yZWRhMzJiYTM4NTM2MTBkMDFhOTQ1YTZhNDlmNWZhNDA0YzNi
MzQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblJh
cmVEYXRhLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25SYXJl
RGF0YS5oCkBAIC02Niw3ICs2Niw3IEBAIGNsYXNzIEZ1bmN0aW9uUmFyZURhdGEgZmluYWwgOiBw
dWJsaWMgSlNDZWxsIHsKICAgICAgICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihGdW5jdGlvblJh
cmVEYXRhLCBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlKTsKICAgICB9CiAKLSAgICBPYmplY3RB
bGxvY2F0aW9uUHJvZmlsZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQorICAgIE9iamVjdEFs
bG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSogb2JqZWN0QWxsb2NhdGlvblByb2ZpbGUoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICZtX29iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogICAgIH0K
QEAgLTE0NSw3ICsxNDUsNyBAQCBjbGFzcyBGdW5jdGlvblJhcmVEYXRhIGZpbmFsIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgLy8KICAgICAvLyBXZSBkb24ndCByZWFsbHkgY2FyZSBhYm91dCAxKSBz
aW5jZSB0aGlzIG1lbW9yeSBpcyByYXJlIGFuZCBzbWFsbCBpbiB0b3RhbC4gMikgaXMgdW5mb3J0
dW5hdGUgYnV0IGlzCiAgICAgLy8gcHJvYmFibHkgb3V0d2VpZ2hlZCBieSB0aGUgY29zdCBvZiAz
KS4KLSAgICBPYmplY3RBbGxvY2F0aW9uUHJvZmlsZSBtX29iamVjdEFsbG9jYXRpb25Qcm9maWxl
OworICAgIE9iamVjdEFsbG9jYXRpb25Qcm9maWxlV2l0aFByb3RvdHlwZSBtX29iamVjdEFsbG9j
YXRpb25Qcm9maWxlOwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9vYmplY3RBbGxvY2F0aW9u
UHJvZmlsZVdhdGNocG9pbnQ7CiAgICAgSW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxl
IG1faW50ZXJuYWxGdW5jdGlvbkFsbG9jYXRpb25Qcm9maWxlOwogICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fYm91bmRGdW5jdGlvblN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS90b29scy9IZWFwVmVyaWZpZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKaW5kZXggZDc3M2Q4NTVmZmMyZTAxNTQ4ZWNmNmRh
YThjZDhkNTU1OTFjOGM5Ni4uMDVlNDA5OWIxNjRjNmE4YTFkNzEzNzRjZmRjNDViNjJkODM4NjBl
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0hlYXBWZXJpZmllci5jcHAKQEAg
LTMzMCw3ICszMzAsNyBAQCBib29sIEhlYXBWZXJpZmllcjo6dmFsaWRhdGVKU0NlbGwoVk0qIGV4
cGVjdGVkVk0sIEpTQ2VsbCogY2VsbCwgQ2VsbFByb2ZpbGUqIHBybwogICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGpzRHluYW1pY0Nhc3Q8Q29kZUJsb2NrKj4odm0sIGNlbGwpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoY29kZUJsb2NrKSkgewogICAgICAgICAgICAgYm9vbCBzdWNjZXNz
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9yRWFjaFZhbHVlUHJvZmlsZShbJl0o
VmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUpIHsKKyAgICAgICAgICAgIGNvZGVCbG9jay0+Zm9y
RWFjaFZhbHVlUHJvZmlsZShbJl0oVmFsdWVQcm9maWxlJiB2YWx1ZVByb2ZpbGUsIGJvb2wpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgVmFsdWVQcm9maWxlOjp0
b3RhbE51bWJlck9mQnVja2V0czsgKytpKSB7CiAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUg
dmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWVQcm9maWxlLm1fYnVja2V0c1tpXSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICghdmFsdWUpCg==
</data>
<flag name="review"
          id="386145"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>