<?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>163305</bug_id>
          
          <creation_ts>2016-10-11 16:25:23 -0700</creation_ts>
          <short_desc>We should have a way of profiling when a get_by_id is pure and to emit a PureGetById in the DFG/FTL</short_desc>
          <delta_ts>2016-11-15 15:13:20 -0800</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>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=164227</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>164797</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1239077</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-11 16:25:23 -0700</bug_when>
    <thetext>Fil just proposed this idea to me, and it could end up helping quite a bit for certain types of programs.
We could profile when a get_by_id never does effectful operations. If so, we can compile it in the DFG
as a PureGetById, which will cause the codeblock to invalidate if it is ever about to execute something
effectful. This could be a huge win because it could enable CSE around PureGetById and even code motion of PureGetById.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239088</commentid>
    <comment_count>1</comment_count>
      <attachid>291314</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-11 16:30:54 -0700</bug_when>
    <thetext>Created attachment 291314
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1239089</commentid>
    <comment_count>2</comment_count>
      <attachid>291314</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-11 16:31:16 -0700</bug_when>
    <thetext>Comment on attachment 291314
patch for landing

Ooops, wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241252</commentid>
    <comment_count>3</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-17 17:00:55 -0700</bug_when>
    <thetext>I&apos;m going to start work on this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241619</commentid>
    <comment_count>4</comment_count>
      <attachid>291984</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-18 14:33:38 -0700</bug_when>
    <thetext>Created attachment 291984
WIP

It at least runs one program.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241732</commentid>
    <comment_count>5</comment_count>
      <attachid>292012</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-18 17:49:33 -0700</bug_when>
    <thetext>Created attachment 292012
WIP

It can run many tests, but not all of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1241774</commentid>
    <comment_count>6</comment_count>
      <attachid>292027</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-18 19:24:00 -0700</bug_when>
    <thetext>Created attachment 292027
WIP

Passes more tests, however, I&apos;m now dubious in many implementations of getOwnPropertySlot when we&apos;re using VMInquiry (note that this can mean the tryGetById is also broken for such cases). Just one example, JSFunction::getOwnPropertySlot may transition the structure of the thing we&apos;re inquiring about. This obviously goes against what we&apos;re asking when we do VMInquiry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242628</commentid>
    <comment_count>7</comment_count>
      <attachid>292271</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-20 15:39:52 -0700</bug_when>
    <thetext>Created attachment 292271
WIP

Pretty close to done, but there is a octane/regexp regression I want to fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1242630</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-20 15:42:04 -0700</bug_when>
    <thetext>Attachment 292271 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:73:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 23 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>1243227</commentid>
    <comment_count>9</comment_count>
      <attachid>292447</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-21 19:24:13 -0700</bug_when>
    <thetext>Created attachment 292447
patch

This patch is ready for review in terms of it will be good to get feedback from people on it.

However, there is still one more change I want to make which is to invalidate() a CodeBlock whenever the getOwnPropertySlot calls into some NS Plugin code&apos;s getOwnPropertySlot implementation. I will probably create some API on PropertySlot that is called willDoSideEffects() or something like that since we expect a call to getOwnPropertySlot(VMInquiry) not to do user observable side effects, but the plugin code probably doesn&apos;t adhere to this rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243245</commentid>
    <comment_count>10</comment_count>
      <attachid>292454</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-21 20:52:00 -0700</bug_when>
    <thetext>Created attachment 292454
patch

rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243246</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-21 20:54:29 -0700</bug_when>
    <thetext>Attachment 292454 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:73:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 31 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>1243288</commentid>
    <comment_count>12</comment_count>
      <attachid>292469</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-21 22:49:07 -0700</bug_when>
    <thetext>Created attachment 292469
patch

fix the build after renaming things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243291</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-21 22:50:26 -0700</bug_when>
    <thetext>Attachment 292469 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:73:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 31 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>1243496</commentid>
    <comment_count>14</comment_count>
      <attachid>292469</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-23 01:50:06 -0700</bug_when>
    <thetext>Comment on attachment 292469
patch

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

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:515
&gt; +        write(JSCell_typeInfoType);
&gt; +        write(JSCell_indexingType);

These should be deleted I believe since I don&apos;t think getOwnPropertySlot should do this.

&gt; Source/JavaScriptCore/dfg/DFGClobberize.h:524
&gt; +        write(Butterfly_publicLength);
&gt; +        write(Butterfly_vectorLength);

I also don&apos;t think this is strictly accurate. I was trying to model the allocation of a butterfly, but this seems like it&apos;ll prevent CSE of things that read vectorLength/publicLength across a PureGetById. Also, it seems like it would be very weird for any getOwnPropertySlots to change the values of these fields.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243497</commentid>
    <comment_count>15</comment_count>
      <attachid>292469</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-23 01:51:53 -0700</bug_when>
    <thetext>Comment on attachment 292469
patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:214
&gt; +        getByIdFunction = operationGetByIdOptimize;

This is also obviously wrong. It should be operationPureGetByIdOptimize.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243499</commentid>
    <comment_count>16</comment_count>
      <attachid>292469</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-23 02:22:32 -0700</bug_when>
    <thetext>Comment on attachment 292469
patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:214
&gt;&gt; +        getByIdFunction = operationGetByIdOptimize;
&gt; 
&gt; This is also obviously wrong. It should be operationPureGetByIdOptimize.

I&apos;ll add some tests for this since this would obviously break some programs and no tests caught it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243805</commentid>
    <comment_count>17</comment_count>
      <attachid>292633</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-24 11:29:20 -0700</bug_when>
    <thetext>Created attachment 292633
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243806</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-24 11:31:42 -0700</bug_when>
    <thetext>Attachment 292633 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:73:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 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>1243807</commentid>
    <comment_count>19</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-24 11:31:53 -0700</bug_when>
    <thetext>&gt; Source/JavaScriptCore/ChangeLog:15
&gt; +        effects. If it realizes that it must perform side effects, it will perform
&gt; +        the side effect, but also invalidate the CodeBlock that compiled it,
&gt; +        which will cause us to exit once we return back to the compiled code.
&gt; +        This allows us to have stricter clobberize rules for PureGetById which
&gt; +        model how getOwnPropertySlot(VMInquiry) behaves. This means that PureGetByIds

Is an invalidated CodeBlock guaranteed to exit forward (and not re-execute part or all of the get_by_id)?

&gt; Source/JavaScriptCore/jit/JITOperations.cpp:82
&gt; +            exec-&gt;codeBlock()-&gt;jettison(Profiler::JettisonDueToPureGetByIdEffects);
&gt; +            return baseValue.get(exec, uid);

Do we need to update the StructureStubInfo so that we know not to do the PureGetById optimization in the future? Alternatively, could the optimizing path check whether we&apos;ve ever jettisoned with this reason before?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243820</commentid>
    <comment_count>20</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-24 11:46:51 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Source/JavaScriptCore/ChangeLog:15
&gt; &gt; +        effects. If it realizes that it must perform side effects, it will perform
&gt; &gt; +        the side effect, but also invalidate the CodeBlock that compiled it,
&gt; &gt; +        which will cause us to exit once we return back to the compiled code.
&gt; &gt; +        This allows us to have stricter clobberize rules for PureGetById which
&gt; &gt; +        model how getOwnPropertySlot(VMInquiry) behaves. This means that PureGetByIds
&gt; 
&gt; Is an invalidated CodeBlock guaranteed to exit forward (and not re-execute
&gt; part or all of the get_by_id)?
Yeah, that&apos;s why we actually finish performing the get() operation. We invalidate the CodeBlock, which will mean we OSR exit at the InvalidationPoint that follows the PureGetById. It&apos;s guaranteed to be followed by an InvalidationPoint because we claim it writes to Watchpoint_fire.
So you&apos;ll get DFG code like this:
x: PureGetById(...)
y: MovHint(@x, locX)
z: InvalidationPoint // Where we will exit

&gt; 
&gt; &gt; Source/JavaScriptCore/jit/JITOperations.cpp:82
&gt; &gt; +            exec-&gt;codeBlock()-&gt;jettison(Profiler::JettisonDueToPureGetByIdEffects);
&gt; &gt; +            return baseValue.get(exec, uid);
&gt; 
&gt; Do we need to update the StructureStubInfo so that we know not to do the
&gt; PureGetById optimization in the future? Alternatively, could the optimizing
&gt; path check whether we&apos;ve ever jettisoned with this reason before?

I&apos;ve given this some thought, and we probably should try to update the baseline version to reflect that we did effects.
The reason I didn&apos;t write code to do this is that if we do jettison, it&apos;s likely we will
to the side-effecting thing again, in which case, we won&apos;t ever compile it as a PureGetById.
However, it&apos;s possible we do a side-effecting thing once, and then never again, and in which
case, it would be profitable to compile it as a PureGetById. However, if we think this is common,
it&apos;s probably better to simply OSR exit in such circumstances and not jettison. For now, I&apos;ll
add code which will try to find the baseline JITs stub and write to its didSideEffects bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243826</commentid>
    <comment_count>21</comment_count>
      <attachid>292633</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-24 12:00:56 -0700</bug_when>
    <thetext>Comment on attachment 292633
patch

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

r=me with some code de-duplification.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4274
&gt; +    case PureGetById: {

I think it would be better if you changed to just use a JSValueRegs. Then you wouldn&apos;t need a 32-bit and 64-bit version. You could probably modify compileTryGetById to work with PureGetById.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1243853</commentid>
    <comment_count>22</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-10-24 13:15:58 -0700</bug_when>
    <thetext>&gt; For now, I&apos;ll
&gt; add code which will try to find the baseline JITs stub and write to its
&gt; didSideEffects bit.

I think this is probably the right balance. I agree that varying a property&apos;s purity is probably rare. So, the defense we need is just defense against pathological behavior (compile, jettison, compile, jettison). Backing off to impure get_by_id is a small price to pay, and way way way less costly than continuing to jettison.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1245984</commentid>
    <comment_count>23</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-28 23:09:53 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Comment on attachment 292633 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=292633&amp;action=review
&gt; 
&gt; r=me with some code de-duplification.
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:4274
&gt; &gt; +    case PureGetById: {
&gt; 
&gt; I think it would be better if you changed to just use a JSValueRegs. Then
&gt; you wouldn&apos;t need a 32-bit and 64-bit version. You could probably modify
&gt; compileTryGetById to work with PureGetById.

I&apos;ll keep the function separate from compileTryGetById, but I&apos;ll create a version that works both with 32 and 64 bit platforms.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246106</commentid>
    <comment_count>24</comment_count>
      <attachid>293317</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-29 16:54:26 -0700</bug_when>
    <thetext>Created attachment 293317
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246108</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-29 16:57:02 -0700</bug_when>
    <thetext>Attachment 293317 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:74:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:84:  This { should be at the end of the previous line  [whitespace/braces] [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>1246110</commentid>
    <comment_count>26</comment_count>
      <attachid>293319</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-29 17:07:16 -0700</bug_when>
    <thetext>Created attachment 293319
patch for landing

fix efl build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246111</commentid>
    <comment_count>27</comment_count>
      <attachid>293320</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-29 17:08:26 -0700</bug_when>
    <thetext>Created attachment 293320
patch for landing

more efl build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246112</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-29 17:09:39 -0700</bug_when>
    <thetext>Attachment 293320 did not pass style-queue:


ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:74:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/jit/JITOperations.cpp:84:  This { should be at the end of the previous line  [whitespace/braces] [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>1246118</commentid>
    <comment_count>29</comment_count>
      <attachid>293320</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-29 18:41:16 -0700</bug_when>
    <thetext>Comment on attachment 293320
patch for landing

Clearing flags on attachment: 293320

Committed r208117: &lt;http://trac.webkit.org/changeset/208117&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1246119</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-29 18:41:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250243</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-11-11 08:54:06 -0800</bug_when>
    <thetext>Reverted r208117 and r208160 for reason:

Regressed Speedometer by &gt;1.5%

Committed r208588: &lt;http://trac.webkit.org/changeset/208588&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291314</attachid>
            <date>2016-10-11 16:30:54 -0700</date>
            <delta_ts>2016-10-11 16:31:16 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>3735</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA3MTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE2LTEwLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEhhc093blByb3BlcnR5Q2FjaGUgbmVlZHMgdG8gcmVmIHRoZSBVbmlxdWVkU3RyaW5nSW1wbHMg
aXQgc2VlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYzMjU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZyZXkgR2FyZW4uCisKKyAgICAgICAg
VGhlIGNhY2hlIG5lZWRzIHRvIGJlIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IHRoaW5n
cworICAgICAgICBpbiB0aGUgY2FjaGUgc3RheSBhbGl2ZS4gQmVmb3JlLCBpdCB3YXNuJ3QgZG9p
bmcgdGhpcywgYW5kCisgICAgICAgIHRoYXQgd2FzIHdyb25nLgorCisgICAgICAgICogcnVudGlt
ZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmg6CisgICAgICAgIChKU0M6Okhhc093blByb3BlcnR5Q2Fj
aGU6OkVudHJ5OjpvcGVyYXRvcj0pOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUNhY2hl
OjpvcGVyYXRvciBkZWxldGUpOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUNhY2hlOjpj
cmVhdGUpOgorICAgICAgICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUNhY2hlOjpnZXQpOgorICAgICAg
ICAoSlNDOjpIYXNPd25Qcm9wZXJ0eUNhY2hlOjp0cnlBZGQpOgorICAgICAgICAoSlNDOjpIYXNP
d25Qcm9wZXJ0eUNhY2hlOjpjbGVhcik6CisgICAgICAgIChKU0M6Okhhc093blByb3BlcnR5Q2Fj
aGU6Onplcm9CdWZmZXIpOgorCiAyMDE2LTEwLTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBs
ZS5jb20+CiAKICAgICAgICAgQWlyIHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgY29uc3RhbnQg
bWF0ZXJpYWxpemF0aW9ucyB3aXRoIGFkZHMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9IYXNPd25Qcm9wZXJ0eUNhY2hlLmgJKHJldmlzaW9uIDIwNzE1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc093blByb3BlcnR5Q2FjaGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDIsMTUgKzQyLDI2IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGlj
IHB0cmRpZmZfdCBvZmZzZXRPZkltcGwoKSB7IHJldHVybiBPQkpFQ1RfT0ZGU0VUT0YoRW50cnks
IGltcGwpOyB9CiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZSZXN1bHQoKSB7IHJl
dHVybiBPQkpFQ1RfT0ZGU0VUT0YoRW50cnksIHJlc3VsdCk7IH0KIAotICAgICAgICBVbmlxdWVk
U3RyaW5nSW1wbCogaW1wbDsKLSAgICAgICAgU3RydWN0dXJlSUQgc3RydWN0dXJlSUQ7Ci0gICAg
ICAgIGJvb2wgcmVzdWx0OworICAgICAgICBFbnRyeSgpID0gZGVmYXVsdDsKKworICAgICAgICBF
bnRyeSYgb3BlcmF0b3I9KEVudHJ5JiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlt
cGwgPSBXVEZNb3ZlKG90aGVyLmltcGwpOworICAgICAgICAgICAgc3RydWN0dXJlSUQgPSBvdGhl
ci5zdHJ1Y3R1cmVJRDsKKyAgICAgICAgICAgIHJlc3VsdCA9IG90aGVyLnJlc3VsdDsKKyAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4gaW1wbCB7IH07CisgICAgICAgIFN0cnVjdHVyZUlEIHN0cnVjdHVyZUlEIHsg
MCB9OworICAgICAgICBib29sIHJlc3VsdCB7IGZhbHNlIH07CiAgICAgfTsKIAogICAgIEhhc093
blByb3BlcnR5Q2FjaGUoKSA9IGRlbGV0ZTsKIAogICAgIHZvaWQgb3BlcmF0b3IgZGVsZXRlKHZv
aWQqIGNhY2hlKQogICAgIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SGFzT3duUHJvcGVydHlDYWNo
ZSo+KGNhY2hlKS0+Y2xlYXIoKTsKICAgICAgICAgZmFzdEZyZWUoY2FjaGUpOwogICAgIH0KIApA
QCAtNTgsNyArNjksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBzaXplX3QgYWxsb2NhdGlv
blNpemUgPSBzaXplb2YoRW50cnkpICogc2l6ZTsKICAgICAgICAgSGFzT3duUHJvcGVydHlDYWNo
ZSogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SGFzT3duUHJvcGVydHlDYWNoZSo+KGZhc3RNYWxsb2Mo
YWxsb2NhdGlvblNpemUpKTsKLSAgICAgICAgcmVzdWx0LT5jbGVhcigpOworICAgICAgICByZXN1
bHQtPmNsZWFyQnVmZmVyKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC03
Myw3ICs4NCw3IEBAIHB1YmxpYzoKICAgICAgICAgU3RydWN0dXJlSUQgaWQgPSBzdHJ1Y3R1cmUt
PmlkKCk7CiAgICAgICAgIHVpbnQzMl90IGluZGV4ID0gSGFzT3duUHJvcGVydHlDYWNoZTo6aGFz
aChpZCwgaW1wbCkgJiBtYXNrOwogICAgICAgICBFbnRyeSYgZW50cnkgPSBiaXR3aXNlX2Nhc3Q8
RW50cnkqPih0aGlzKVtpbmRleF07Ci0gICAgICAgIGlmIChlbnRyeS5zdHJ1Y3R1cmVJRCA9PSBp
ZCAmJiBlbnRyeS5pbXBsID09IGltcGwpCisgICAgICAgIGlmIChlbnRyeS5zdHJ1Y3R1cmVJRCA9
PSBpZCAmJiBlbnRyeS5pbXBsLmdldCgpID09IGltcGwpCiAgICAgICAgICAgICByZXR1cm4gZW50
cnkucmVzdWx0OwogICAgICAgICByZXR1cm4gTnVsbG9wdDsKICAgICB9CkBAIC0xMDQsMTMgKzEx
NSwyNSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogaW1wbCA9IHBy
b3BOYW1lLnVpZCgpOwogICAgICAgICAgICAgU3RydWN0dXJlSUQgaWQgPSBzdHJ1Y3R1cmUtPmlk
KCk7CiAgICAgICAgICAgICB1aW50MzJfdCBpbmRleCA9IEhhc093blByb3BlcnR5Q2FjaGU6Omhh
c2goaWQsIGltcGwpICYgbWFzazsKLSAgICAgICAgICAgIGJpdHdpc2VfY2FzdDxFbnRyeSo+KHRo
aXMpW2luZGV4XSA9IEVudHJ5eyBpbXBsLCBpZCwgcmVzdWx0IH07CisgICAgICAgICAgICBiaXR3
aXNlX2Nhc3Q8RW50cnkqPih0aGlzKVtpbmRleF0gPSBFbnRyeXsgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPihpbXBsKSwgaWQsIHJlc3VsdCB9OwogICAgICAgICB9CiAgICAgfQogCiAgICAgdm9p
ZCBjbGVhcigpCiAgICAgewotICAgICAgICBtZW1zZXQodGhpcywgMCwgc2l6ZW9mKEVudHJ5KSAq
IHNpemUpOworICAgICAgICBFbnRyeSogYnVmZmVyID0gYml0d2lzZV9jYXN0PEVudHJ5Kj4odGhp
cyk7CisgICAgICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
ICAgICBidWZmZXJbaV0uRW50cnk6On5FbnRyeSgpOworCisgICAgICAgIGNsZWFyQnVmZmVyKCk7
CisgICAgfQorCitwcml2YXRlOgorICAgIHZvaWQgY2xlYXJCdWZmZXIoKQorICAgIHsKKyAgICAg
ICAgRW50cnkqIGJ1ZmZlciA9IGJpdHdpc2VfY2FzdDxFbnRyeSo+KHRoaXMpOworICAgICAgICBm
b3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgbmV3ICgmYnVm
ZmVyW2ldKSBFbnRyeSgpOwogICAgIH0KIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>291984</attachid>
            <date>2016-10-18 14:33:38 -0700</date>
            <delta_ts>2016-10-18 17:49:33 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>24766</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw4IEBAIEdl
dEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvclMKICAgICAgICAgICAgICAgICBz
bG93UGF0aFN0YXRlID0gTWFrZXNDYWxsczsKICAgICAgICAgfQogICAgIH0KKworICAgIGlmIChz
dHViSW5mby0+ZGlkU2lkZUVmZmVjdHMpCiAgICAgCiAgICAgaWYgKHN0dWJJbmZvLT50b29rU2xv
d1BhdGgpCiAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKHNsb3dQYXRoU3RhdGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1
YkluZm8uY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3
IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyhBY2MKICAgICAsIHJlc2V0
QnlHQyhmYWxzZSkKICAgICAsIHRvb2tTbG93UGF0aChmYWxzZSkKICAgICAsIGV2ZXJDb25zaWRl
cmVkKGZhbHNlKQorICAgICwgZGlkU2lkZUVmZmVjdHMoZmFsc2UpCiB7CiB9CiAKQEAgLTIxNiw3
ICsyMTcsMTAgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6cmVzZXQoQ29kZUJsb2NrKgogICAg
IH0KIAogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewotICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0
UHVyZToKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SUQ6CisgICAgICAgIHJlc2V0R2V0
QnlJRChjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUlES2luZDo6VHJ5R2V0QnlJRCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6UHVyZUdldDoKICAgICAgICAgcmVzZXRHZXRC
eUlEKGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5SURLaW5kOjpQdXJlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBBY2Nlc3NUeXBlOjpHZXQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkocmV2aXNpb24gMjA3NDc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDggQEAgY2xhc3MgUG9seW1vcnBoaWNBY2Nlc3M7CiAK
IGVudW0gY2xhc3MgQWNjZXNzVHlwZSA6IGludDhfdCB7CiAgICAgR2V0LAotICAgIEdldFB1cmUs
CisgICAgVHJ5R2V0QnlJRCwKKyAgICBQdXJlR2V0LAogICAgIFB1dCwKICAgICBJbgogfTsKQEAg
LTIwNSw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXNldEJ5R0MgOiAxOwogICAgIGJv
b2wgdG9va1Nsb3dQYXRoIDogMTsKICAgICBib29sIGV2ZXJDb25zaWRlcmVkIDogMTsKKyAgICBi
b29sIGRpZFNpZGVFZmZlY3RzIDogMTsKIH07CiAKIGlubGluZSBDb2RlT3JpZ2luIGdldFN0cnVj
dHVyZVN0dWJJbmZvQ29kZU9yaWdpbihTdHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJlU3R1Yklu
Zm8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0
ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIxMTksNiArMjExOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAg
ICAgICBicmVhazsKIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgog
ICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGljdGlvbigp
KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyOTMsOCArMzI5MywxMCBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIE5vZGVUeXBlIGdldEJ5
SWQ7CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAgICAgICBnZXRCeUlkID0g
Z2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgPyBHZXRCeUlkRmx1c2ggOiBHZXRCeUlkOwotICAg
IGVsc2UKKyAgICBlbHNlIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SUQpCiAgICAg
ICAgIGdldEJ5SWQgPSBUcnlHZXRCeUlkOworICAgIGVsc2UKKyAgICAgICAgZ2V0QnlJZCA9IFB1
cmVHZXRCeUlkOwogCiAgICAgLy8gU3BlY2lhbCBwYXRoIGZvciBjdXN0b20gYWNjZXNzb3JzIHNp
bmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBoYXZlIGFueSBtZWFuaW5ncy4KICAgICAvLyBT
bywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tIFNpbXBsZSBvbmUuIEJ1dCB3ZSBo
YXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdoZW4gd2UgdXNlIERPTUpJVC4KQEAgLTQzNDcs
OCArNDM0OSwxOCBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2RmZ0Nv
ZGVCbG9jaywKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcywg
bV9kZmdTdHViSW5mb3MsCiAgICAgICAgICAgICAgICAgY3VycmVudENvZGVPcmlnaW4oKSwgdWlk
KTsKLSAgICAgICAgICAgIEFjY2Vzc1R5cGUgdHlwZSA9IG9wX3RyeV9nZXRfYnlfaWQgPT0gb3Bj
b2RlSUQgPyBBY2Nlc3NUeXBlOjpHZXRQdXJlIDogQWNjZXNzVHlwZTo6R2V0OwotICAgICAgICAg
ICAgCisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5
cGU6OlRyeUdldEJ5SUQ7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBDb25j
dXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pm1fbG9jayk7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIGluZm8gPSBtX2lu
bGluZVN0YWNrVG9wLT5tX3N0dWJJbmZvcy5nZXQoY3VycmVudENvZGVPcmlnaW4oKSk7CisgICAg
ICAgICAgICAgICAgaWYgKGluZm8gJiYgaW5mby0+ZXZlckNvbnNpZGVyZWQgJiYgIWluZm8tPmRp
ZFNpZGVFZmZlY3RzKQorICAgICAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6UHVy
ZUdldDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBB
Y2Nlc3NUeXBlOjpHZXQ7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGhhbmRsZUdldEJ5
SWQoCiAgICAgICAgICAgICAgICAgY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJl
ZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0QnlJZFN0YXR1cywgdHlwZSk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lv
biAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDk0LDYgKzQ5NCwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgm
IGdyYXBoLCBOb2RlKiBub2RlCiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oSXNGdW5jdGlvbkxv
YywgTWlzY0ZpZWxkcywgbm9kZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CiAgICAgICAg
IHJldHVybjsKICAgICAgICAgCisgICAgY2FzZSBQdXJlR2V0QnlJZDogeworICAgICAgICAvLyBG
SVhNRTogaXMgaXQgdmFsaWQgdG8gc2F5IHRoYXQgaXQgb25seSByZWFkcyB0aGlzPyBNYXliZSB3
ZSBuZWVkIHRvIHNheSByZWFkKEhlYXApPworICAgICAgICBBYnN0cmFjdEhlYXAgaGVhcChOYW1l
ZFByb3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAgIHJlYWQoaGVh
cCk7CisgICAgICAgIGRlZihIZWFwTG9jYXRpb24oTmFtZWRQcm9wZXJ0eUxvYywgaGVhcCwgbm9k
ZS0+Y2hpbGQxKCkpLCBMYXp5Tm9kZShub2RlKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
ICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBHZXRC
eUlkV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ0OCw2ICs0NDgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6
CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgICAgICBjYXNlIEdldEJ5SWRGbHVz
aDogewogICAgICAgICAgICAgICAgIEVkZ2UgY2hpbGRFZGdlID0gbm9kZS0+Y2hpbGQxKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDc0
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk4LDYgKzk4LDcgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBu
b2RlKQogICAgIGNhc2UgQXJpdGhMb2c6CiAgICAgY2FzZSBWYWx1ZUFkZDoKICAgICBjYXNlIFRy
eUdldEJ5SWQ6CisgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CiAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIwNzQ3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExNjcsNiArMTE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2Ug
R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBCeXRlQ29kZVBhcnNlciBiYXNlZCBvbiBy
ZWFkaW5nIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9u
IDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05MTEsNiArOTExLDcgQEAgcHVibGljOgogICAgICAgICBzd2l0Y2ggKG9wKCkp
IHsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CisgICAg
ICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICAgICAgY2FzZSBQdXRCeUlkOgpAQCAtMTQyMSw2
ICsxNDIyLDcgQEAgcHVibGljOgogICAgICAgICBjYXNlIEFyaXRoQ2VpbDoKICAgICAgICAgY2Fz
ZSBBcml0aFRydW5jOgogICAgICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgorICAgICAgICBjYXNl
IFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOgogICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTg1LDYg
KzE4NSw3IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQdXRC
eVZhbCwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFjcm8oUHV0
QnlWYWxBbGlhcywgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCiAgICAgbWFj
cm8oVHJ5R2V0QnlJZCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oUHVyZUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZEZsdXNoLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZFdpdGhU
aGlzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlv
blBoYXNlLmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4
Miw2ICs2ODIsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIFJlZ0V4cFRlc3Q6CiAgICAgICAg
IGNhc2UgU3RyaW5nUmVwbGFjZToKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlUmVnRXhwOgor
ICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAg
IGNhc2UgR2V0QnlJZEZsdXNoOgogICAgICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCShyZXZpc2lv
biAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDYgKzE5OSw3IEBAIGJvb2wgc2FmZVRvRXhlY3V0ZShB
YnN0cmFjdFN0YXRlVHlwZSYgc3QKICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgY2FzZSBEZWxl
dGVCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlWYWw6CisgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAg
ICBjYXNlIEdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgY2FzZSBHZXRC
eVZhbFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzksOCArMTc5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQoQ29kZU8K
ICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xvd0Nhc2Vz
LmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAorICAgIGF1dG8gc2xvd1BhdGhGdW5j
dGlvbiA9IHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
IDoKKyAgICAgICAgdHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0ID8gb3BlcmF0aW9uUHVyZUdl
dEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKwogICAgIGF1dG8g
c2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywgdHlwZSA9
PSBBY2Nlc3NUeXBlOjpHZXQgPyBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUgOiBvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUsCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgc2xvd1BhdGhGdW5j
dGlvbiwKICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50OjpDaGVj
a05lZWRlZCwKICAgICAgICAgcmVzdWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQUiwgaWRl
bnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgCkBAIC00MjM1LDYgKzQyMzgsNDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVh
azsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAgICAgIHN3aXRjaCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CisgICAgICAgIGNhc2UgQ2VsbFVzZTogeworICAgICAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7Cisg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKworICAg
ICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BSUmVn
IHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgYmFzZS51c2UoKTsKKwor
ICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIs
IHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgp
LCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdldCk7CisKKyAgICAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVk
RXhwbGljaXRseSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgVW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCBiYXNlKTsKKworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwor
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAg
ICAgYmFzZS51c2UoKTsKKworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlR1BSKTsKKworICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRl
bnRpZmllck51bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdl
dCk7CisKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlLCBEYXRhRm9y
bWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBERkdfQ1JBU0gobV9q
aXQuZ3JhcGgoKSwgbm9kZSwgIkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6
IHsKICAgICAgICAgaWYgKCFub2RlLT5wcmVkaWN0aW9uKCkpIHsKICAgICAgICAgICAgIHRlcm1p
bmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3Mo
KSwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNyArMTAwMyw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE4KIAogICAgICAgICBi
YXNlLnVzZSgpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21w
aWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVn
cywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9T
cGlsbCwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRs
eSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQoTgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwsIEFjY2Vzc1R5cGU6Okdl
dFB1cmUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFz
ZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9u
dFNwaWxsLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNp
dGx5KTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyMyw3
ICs2MjMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0cnVjdHVyZSgpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKLSAgICAgICAgICAg
IGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICAgICAgY29tcGls
ZUdldEJ5SWQoQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAgLTI3ODgs
NyArMjc4OCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZChBY2Nl
c3NUeXBlIHR5cGUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpH
ZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgQVNTRVJUKHR5cGUg
PT0gQWNjZXNzVHlwZTo6R2V0IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CiAg
ICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAgY2Fz
ZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQobG93Q2VsbChtX25v
ZGUtPmNoaWxkMSgpKSwgdHlwZSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzgsNiArMTc4
LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KIAorRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMs
IFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIEFTU0VSVChpc09wdGlt
aXppbmdKSVQoZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOworCisgICAgSWRlbnRpZmll
ciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisKKyAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGJhc2UpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CisgICAgYmFzZVZhbHVlLmdldFBy
b3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CisKKyAgICAvLyBGSVhNRTogY2hlY2sgZm9y
IG5vbiBiYXNlIGNlbGwgYW5kIGFsc28gbm90IGVmZmVjdGZ1bCBuaWNlIGZvciB0aGF0LgorICAg
IGlmIChzbG90LmlzQWNjZXNzb3IoKSB8fCBzbG90LmlzQ3VzdG9tKCkgfHwgc2xvdC5pc1RhaW50
ZWRCeU9wYXF1ZU9iamVjdCgpKSB7CisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qZXR0aXNv
bihQcm9maWxlcjo6SmV0dGlzb25EdWVUb09TUkV4aXQpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUKHNs
b3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHNsb3QuaXNWYWx1ZSgpID8gc2xvdC5nZXRWYWx1ZShleGVjLCB1aWQpIDoganNVbmRlZmlu
ZWQoKSk7Cit9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0
QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQogewpAQCAtMTkyLDYgKzIxNiwyOSBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90
LmdldFB1cmVSZXN1bHQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIEFT
U0VSVChpc09wdGltaXppbmdKSVQoZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOworCisg
ICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CisKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOworICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNs
b3QpOworICAgIC8vIEZJWE1FOiBjaGVjayBmb3Igbm9uIGJhc2UgY2VsbCBhbmQgYWxzbyBub3Qg
ZWZmZWN0ZnVsIG5pY2UgZm9yIHRoYXQuCisKKyAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkgfHwg
c2xvdC5pc0N1c3RvbSgpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkgeworICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9P
U1JFeGl0KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5z
ZXQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmlzVmFsdWUoKSA/IHNsb3Qu
Z2V0VmFsdWUoZXhlYywgdWlkKSA6IGpzVW5kZWZpbmVkKCkpOworfQorCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4
ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKQEAgLTIw
MywxMSArMjUwLDM5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIK
IAogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0NhY2hlYWJs
ZVZhbHVlKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkK
LSAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0
dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMs
IGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRyeUdldEJ5
SUQpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRP
cHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKKworICAgIEFTU0VSVChpc09wdGltaXppbmdKSVQoZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5
cGUoKSkpOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQodm0s
IHVpZCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsK
KyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnQsIHNsb3QpOworCisgICAgLy8gRklYTUU6IGNoZWNrIGZvciBub24gYmFzZSBjZWxs
IGFuZCBhbHNvIG5vdCBlZmZlY3RmdWwgbmljZSBmb3IgdGhhdC4KKworICAgIGlmIChzbG90Lmlz
QWNjZXNzb3IoKSB8fCBzbG90LmlzQ3VzdG9tKCkgfHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9i
amVjdCgpKSB7IC8vIEZJWE1FOiBtYXliZSBwdXQgdGhpcyBpbnNpZGUKKyAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmpldHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT1NSRXhpdCk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfQorCisg
ICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpOworCisg
ICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVs
bCgpKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpKQorICAg
ICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1Yklu
Zm8sIEdldEJ5SURLaW5kOjpUcnlHZXRCeUlEKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC5pc1ZhbHVlKCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIHVpZCkgOiBqc1VuZGVmaW5l
ZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlk
KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNW
YWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFN1cGVyU2FtcGxlclNj
b3BlIHN1cGVyU2FtcGxlclNjb3BlKGZhbHNlKTsKQEAgLTIyMCw2ICsyOTUsOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsKICAgICBJZGVudGlmaWVy
IGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKyAgICBpZiAoc2xvdC5pc0Fj
Y2Vzc29yKCkgfHwgc2xvdC5pc0N1c3RvbSgpKQorICAgICAgICBzdHViSW5mby0+ZGlkU2lkZUVm
ZmVjdHMgPSB0cnVlOwogICAgIAogICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJ
ZCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCgpLCBpZGVudCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwpAQCAtMjUxLDYg
KzMyOCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBM
T0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgYmFzZVZhbHVlLmNsYXNz
SW5mb09yTnVsbCgpLCBpZGVudCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNl
VmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3Bl
cnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgICAgIGlmIChzbG90LmlzQWNjZXNzb3Io
KSB8fCBzbG90LmlzQ3VzdG9tKCkpCisgICAgICAgICAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVj
dHMgPSB0cnVlOworCiAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VW
YWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCiAgICAgICAgICAgICByZXBhdGNoR2V0QnlJRChleGVj
LCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIEdldEJ5SURLaW5kOjpOb3JtYWwp
OwogICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KSA6IGpz
VW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuaAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRP
cGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzMCw2ICszMzAsOSBAQCBpbnQzMl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25QdXJlR2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZShFeGVjU3Rh
dGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1w
bCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBV
bmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUs
IFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1
YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlB
Y2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5NCw3
ICs1OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKEluc3RydWN0CiAKICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgoY3VycmVudEluc3RydWN0aW9uKSwg
UmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBpZGVudC0+
aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdU
MSwgcmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgaWRlbnQtPmltcGwoKSwg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRo
aXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlk
cy5hcHBlbmQoZ2VuKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
UHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcg
KzU3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVn
aXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBpZGVudC0+aW1w
bCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6
R2V0UHVyZSk7CisgICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNW
YWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEKTsKICAgICBnZW4uZ2VuZXJh
dGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsK
ICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYgKzEzNCwzMCBAQCBzdGF0
aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxpbmUgSl9KSVRPcGVyYXRp
b25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2lu
ZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpOb3JtYWwpCisgICAgc3dp
dGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFsOgogICAgICAgICByZXR1
cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRC
eUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5R2V0QnlJRDoKKyAgICAgICAg
cmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBjYXNlIEdldEJ5SURLaW5k
OjpQdXJlOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZTsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIGlu
bGluZSBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgYXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0
aW9uKEdldEJ5SURLaW5kIGtpbmQpCiB7Ci0gICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6Ok5v
cm1hbCkKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpOb3JtYWw6
CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlkOwotICAgIHJldHVybiBvcGVyYXRpb25U
cnlHZXRCeUlkOworICAgIGNhc2UgR2V0QnlJREtpbmQ6OlRyeUdldEJ5SUQ6CisgICAgICAgIHJl
dHVybiBvcGVyYXRpb25UcnlHZXRCeUlkOworICAgIGNhc2UgR2V0QnlJREtpbmQ6OlB1cmU6Cisg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZDsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFj
dGlvbiB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3Qs
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0QnlJREtpbmQga2luZCkKQEAgLTE1OCw2
ICsxNzIsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwogCisgICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6OlB1cmUpCisgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKTsKKwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdDYXNlOwogCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKQEAgLTI2NSw3ICsyODIsNyBAQCBz
dGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgICAgIGlmIChzbG90
LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgJiYgc2xvdC5kb21KSVQoKSkKICAgICAgICAgICAgIGRvbUpJ
VCA9IHNsb3QuZG9tSklUKCk7CiAKLSAgICAgICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6OlB1
cmUpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6OlRyeUdldEJ5SUQgfHwga2lu
ZCA9PSBHZXRCeUlES2luZDo6UHVyZSkgewogICAgICAgICAgICAgQWNjZXNzQ2FzZTo6QWNjZXNz
VHlwZSB0eXBlOwogICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQogICAg
ICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpMb2FkOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SURLaW5kIHsKICAgICBOb3JtYWwsCisgICAg
VHJ5R2V0QnlJRCwKICAgICBQdXJlCiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292012</attachid>
            <date>2016-10-18 17:49:33 -0700</date>
            <delta_ts>2016-10-18 19:24:00 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>26390</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCBy
ZXNldEJ5R0MoZmFsc2UpCiAgICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29u
c2lkZXJlZChmYWxzZSkKKyAgICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0y
MTYsNyArMjE3LDEwIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoK
ICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6
OkdldFB1cmU6CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEOgorICAgICAgICByZXNl
dEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlJREtpbmQ6OlRyeUdldEJ5SUQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1cmVHZXQ6CiAgICAgICAgIHJlc2V0
R2V0QnlJRChjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUlES2luZDo6UHVyZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDIwNzQ3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNz
OwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldCwKLSAgICBHZXRQ
dXJlLAorICAgIFRyeUdldEJ5SUQsCisgICAgUHVyZUdldCwKICAgICBQdXQsCiAgICAgSW4KIH07
CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVzZXRCeUdDIDogMTsKICAg
ICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9vbCBldmVyQ29uc2lkZXJlZCA6IDE7Cisg
ICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9OwogCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRT
dHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0
dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjA3NDc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICBpZiAoIW5vZGUtPnByZWRpY3Rp
b24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgaWYg
KG5vZGUtPm9wKCkgIT0gUHVyZUdldEJ5SWQpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUp
Lm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDc0
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI5Myw4ICszMjkzLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5SWQoCiAgICAgTm9kZVR5cGUgZ2V0QnlJZDsKICAgICBpZiAodHlwZSA9PSBB
Y2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgIGdldEJ5SWQgPSBnZXRCeUlkU3RhdHVzLm1ha2VzQ2Fs
bHMoKSA/IEdldEJ5SWRGbHVzaCA6IEdldEJ5SWQ7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKHR5
cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCkKICAgICAgICAgZ2V0QnlJZCA9IFRyeUdldEJ5
SWQ7CisgICAgZWxzZQorICAgICAgICBnZXRCeUlkID0gUHVyZUdldEJ5SWQ7CiAKICAgICAvLyBT
cGVjaWFsIHBhdGggZm9yIGN1c3RvbSBhY2Nlc3NvcnMgc2luY2UgY3VzdG9tJ3Mgb2Zmc2V0IGRv
ZXMgbm90IGhhdmUgYW55IG1lYW5pbmdzLgogICAgIC8vIFNvLCB0aGlzIGlzIGNvbXBsZXRlbHkg
ZGlmZmVyZW50IGZyb20gU2ltcGxlIG9uZS4gQnV0IHdlIGhhdmUgYSBjaGFuY2UgdG8gb3B0aW1p
emUgaXQgd2hlbiB3ZSB1c2UgRE9NSklULgpAQCAtNDM0Nyw4ICs0MzQ5LDE4IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAg
ICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNz
VHlwZSB0eXBlID0gb3BfdHJ5X2dldF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6Okdl
dFB1cmUgOiBBY2Nlc3NUeXBlOjpHZXQ7Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIEFjY2Vz
c1R5cGUgdHlwZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF90cnlfZ2V0X2J5X2lk
KSAKKyAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRDsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogaW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3R1Yklu
Zm9zLmdldChjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5mbyAm
JiBpbmZvLT5ldmVyQ29uc2lkZXJlZCAmJiAhaW5mby0+ZGlkU2lkZUVmZmVjdHMpCisgICAgICAg
ICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NUeXBlOjpQdXJlR2V0OworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBlKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQs
NiArNDk0LDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5j
aGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAg
ICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAgICAgIC8vIEZJWE1FOiBDYW4gd2UgZ2V0IG1vcmUg
cHJlY2lzZSBvbiB3aGF0IHdlIHJlYWQ/CisgICAgICAgIHJlYWQoSGVhcCk7CisKKyAgICAgICAg
QWJzdHJhY3RIZWFwIGhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCkpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5v
ZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NDgsNiArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1cmVHZXRCeUlk
OgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1
c2g6IHsKICAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjA3
NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEFyaXRoTG9nOgogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBU
cnlHZXRCeUlkOgorICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAg
IGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc0
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24g
cmVhZGluZyB0aGUKQEAgLTExOTQsNyArMTE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVH
ZXRCeUlkIHx8IG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZh
bGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX29yaWdpblRoYXRIYWRGaXJlID0gQ29kZU9yaWdp
bigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAod3JpdGVzT3ZlcmxhcChtX2dy
YXBoLCBub2RlLCBXYXRjaHBvaW50X2ZpcmUpKQorICAgICAgICBpZiAod3JpdGVzT3ZlcmxhcCht
X2dyYXBoLCBub2RlLCBXYXRjaHBvaW50X2ZpcmUpIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5
SWQpIC8vIEZJWE1FOiByZW1vdmUgV2F0Y2hwb2ludF9maXJlIGhlYXAgYW5kIGRlZmluZSBhIGZ1
bmN0aW9uIHRoYXQgc3BlY2lhbCBjYXNlcyBzb21lIG5vZGVzLgogICAgICAgICAgICAgbV9vcmln
aW5UaGF0SGFkRmlyZSA9IG5vZGUtPm9yaWdpbi5mb3JFeGl0OwogICAgIH0KICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTExLDYg
KzkxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2Ug
VHJ5R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgorICAgICAgICBjYXNlIFB1cmVHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKQEAgLTE0MjEsNiArMTQyMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBBcml0aENlaWw6CiAgICAgICAgIGNhc2UgQXJpdGhUcnVuYzoKICAg
ICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAg
ICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFB1cmVHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRXaXRoVGhpcywgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODIsNiArNjgyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBSZWdFeHBUZXN0OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2U6CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKKyAgICAgICAgY2FzZSBQdXJl
R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVz
aDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjA3NDc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5OSw2ICsxOTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNl
IERlbGV0ZUJ5VmFsOgorICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgog
ICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDggKzE3OSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICAKKyAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSB0eXBlID09IEFj
Y2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSA6CisgICAgICAgIHR5cGUg
PT0gQWNjZXNzVHlwZTo6UHVyZUdldCA/IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUgOiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisKICAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0
ID8gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplIDogb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
LAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoRnVuY3Rpb24sCiAgICAgICAgIHNw
aWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCiAgICAgICAg
IHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRp
Zmllck51bWJlcikpOwogICAgIApAQCAtNDIzNSw2ICs0MjM4LDIxIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBQdXJlR2V0QnlJZDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdl
dCk7CisKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCBu
dWxscHRyLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQ
UikpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgaWYgKCFu
b2RlLT5wcmVkaWN0aW9uKCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE4KIAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVk
VG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmll
ck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6
VHJ5R2V0QnlJRCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBE
YXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdl
dEJ5SWQoTgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBub3RDZWxsLCBEb250U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBBY2Nlc3NUeXBl
OjpUcnlHZXRCeUlEKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUs
IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBOZXdBcnJheVdpdGhT
aXplOgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CisgICAgY2FzZSBQ
dXJlR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRo
VGhpczoKICAgICBjYXNlIFRvVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIz
LDcgKzYyMywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0cnVjdHVyZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKLSAgICAgICAg
ICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICAgICAgY29t
cGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFj
Y2Vzc1R5cGU6OlB1cmVHZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0
QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CkBAIC0yNzg4LDcgKzI3OTEsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8IHR5cGUgPT0g
QWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6
OkdldCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SUQgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpQdXJlR2V0KTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgewogICAgICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0yODE1LDYgKzI4MTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5j
dGlvbjsKICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkKICAgICAgICAg
ICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAg
ICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWM7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWM7CiAKQEAgLTg4MzgsNiArODg0Myw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3B0aW1pemF0aW9uRnVu
Y3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpH
ZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCkBA
IC04ODU5LDYgKzg4NjYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogCisgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQp
CisgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291
dC5pc1plcm82NChwYXRjaHBvaW50KSk7CisKICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2ICsxNzgsMjggQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgQVNTRVJUKGlzT3B0aW1pemluZ0pJVChleGVjLT5j
b2RlQmxvY2soKS0+aml0VHlwZSgpKSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Cisg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0
aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50LCBzbG90KTsKKworICAgIC8vIEZJWE1FOiBjaGVjayBmb3Igbm9uIGJhc2UgY2VsbCBh
bmQgYWxzbyBub3QgZWZmZWN0ZnVsIG5pY2UgZm9yIHRoYXQuCisgICAgaWYgKHNsb3QuaXNBY2Nl
c3NvcigpIHx8IHNsb3QuaXNDdXN0b20oKSB8fCBzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0
KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKworICAgIFJF
TEVBU0VfQVNTRVJUKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuaXNWYWx1ZSgpID8gc2xvdC5nZXRWYWx1ZShleGVjLCB1
aWQpIDoganNVbmRlZmluZWQoKSk7Cit9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewpAQCAtMTkyLDYgKzIxNCwyNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKKworICAgIEFTU0VSVChpc09wdGltaXppbmdKSVQoZXhlYy0+Y29kZUJsb2NrKCktPmpp
dFR5cGUoKSkpOworCisgICAgSWRlbnRpZmllciBpZGVudCA9IElkZW50aWZpZXI6OmZyb21VaWQo
dm0sIHVpZCk7CisKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNl
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnQsIHNsb3QpOworICAgIC8vIEZJWE1FOiBjaGVjayBmb3Igbm9uIGJhc2UgY2Vs
bCBhbmQgYWxzbyBub3QgZWZmZWN0ZnVsIG5pY2UgZm9yIHRoYXQuCisKKyAgICBpZiAoc2xvdC5p
c0FjY2Vzc29yKCkgfHwgc2xvdC5pc0N1c3RvbSgpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVP
YmplY3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisg
ICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpOworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5pc1ZhbHVlKCkgPyBzbG90LmdldFZhbHVlKGV4
ZWMsIHVpZCkgOiBqc1VuZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1
cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJ
bXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkBAIC0yMDMsMTEgKzI0Niwz
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAKICAgICBiYXNl
VmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICBpZiAoc3R1Yklu
Zm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpICYmICFzbG90
LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgJiYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8
IHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzVW5zZXQoKSkpCi0gICAgICAgIHJl
cGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0
QnlJREtpbmQ6OlB1cmUpOworICAgICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUs
IGlkZW50LCBzbG90LCAqc3R1YkluZm8sIEdldEJ5SURLaW5kOjpUcnlHZXRCeUlEKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQogCitFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUoRXhl
Y1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVl
IGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBB
U1NFUlQoaXNPcHRpbWl6aW5nSklUKGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRUeXBlKCkpKTsKKwor
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6
Vk1JbnF1aXJ5KTsKKyAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90KTsKKworICAgIC8vIEZJWE1FOiBjaGVjayBmb3Igbm9uIGJhc2UgY2VsbCBhbmQgYWxzbyBu
b3QgZWZmZWN0ZnVsIG5pY2UgZm9yIHRoYXQuCisKKyAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkg
fHwgc2xvdC5pc0N1c3RvbSgpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkvLyBG
SVhNRTogbWF5YmUgcHV0IHRoaXMgaW5zaWRlCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKKworICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QuaXNWYWx1ZSgpIHx8IHNs
b3QuaXNVbnNldCgpKTsKKworICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VW
YWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkgJiYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8IHNs
b3QuaXNVbnNldCgpKSkKKyAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBp
ZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6VHJ5R2V0QnlJRCk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuaXNWYWx1ZSgpID8gc2xvdC5nZXRWYWx1ZShleGVj
LCB1aWQpIDoganNVbmRlZmluZWQoKSk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBz
dHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKIHsK
ICAgICBTdXBlclNhbXBsZXJTY29wZSBzdXBlclNhbXBsZXJTY29wZShmYWxzZSk7CkBAIC0yMjIs
NyArMjkxLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAg
IElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIAog
ICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZhbHVlLmNsYXNzSW5m
b09yTnVsbCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgc3R1YkluZm8tPmRpZFNpZGVFZmZlY3RzIHw9
IHNsb3QuaXNBY2Nlc3NvcigpIHx8IHNsb3QuaXNDdXN0b20oKSB8fCAhYmFzZVZhbHVlLmlzQ2Vs
bCgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIAogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCkBAIC0yNTAs
NyArMzIxLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKICAgICBMT0dfSUMo
KElDRXZlbnQ6Ok9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgYmFzZVZhbHVlLmNsYXNzSW5mb09y
TnVsbCgpLCBpZGVudCkpOwogCisgICAgc3R1YkluZm8tPmRpZFNpZGVFZmZlY3RzIHw9ICFiYXNl
VmFsdWUuaXNDZWxsKCk7CisKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAoYm9vbCBmb3VuZCwgUHJvcGVydHlTbG90
JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgc3R1YkluZm8tPmRpZFNpZGVFZmZlY3RzIHw9
IHNsb3QuaXNBY2Nlc3NvcigpIHx8IHNsb3QuaXNDdXN0b20oKTsKKwogICAgICAgICBpZiAoc3R1
YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpKQogICAg
ICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0
dWJJbmZvLCBHZXRCeUlES2luZDo6Tm9ybWFsKTsKICAgICAgICAgcmV0dXJuIGZvdW5kID8gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5lZCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMzAsNiArMzMwLDkgQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVj
dAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkKEV4ZWNT
dGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyos
IEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiwg
U3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBX
VEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1cmVH
ZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0lt
cGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blB1cmVHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJl
U3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJO
QUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmlj
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1
ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCShyZXZpc2lvbiAyMDc0
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3Bf
dHJ5X2dldF9ieV9pZChJbnN0cnVjdAogCiAgICAgSklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAg
ICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0
ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVS
ZWdpc3RlcnMoKSwKLSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRP
bmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0UHVy
ZSk7CisgICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdU
MCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SUQpOwog
ICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xv
d1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24g
MjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90
cnlfZ2V0X2J5X2lkKEluc3RydWN0CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAg
ICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRl
SW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdp
c3RlcnMoKSwKLSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1w
bCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6
VHJ5R2V0QnlJRCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNs
b3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkocmV2aXNpb24gMjA3NDc3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTM0LDE2ICsxMzQsMzAgQEAgc3RhdGljIGJvb2wgZm9yY2VJQ0ZhaWx1cmUoRXhlY1N0
YXRlKikKIAogaW5saW5lIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZU9wdGltaXpp
bmdHZXRCeUlkRnVuY3Rpb24oR2V0QnlJREtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBH
ZXRCeUlES2luZDo6Tm9ybWFsKQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJ
REtpbmQ6Ok5vcm1hbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsK
LSAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0QnlJ
REtpbmQ6OlRyeUdldEJ5SUQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0
aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6UHVyZToKKyAgICAgICAgcmV0dXJuIG9wZXJh
dGlvblB1cmVHZXRCeUlkT3B0aW1pemU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQogfQogCiBpbmxpbmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFw
cHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQogewotICAg
IGlmIChraW5kID09IEdldEJ5SURLaW5kOjpOb3JtYWwpCisgICAgc3dpdGNoIChraW5kKSB7Cisg
ICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFsOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0
QnlJZDsKLSAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURL
aW5kOjpUcnlHZXRCeUlEOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZDsKKyAg
ICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHVyZUdl
dEJ5SWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
fQogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8s
IEdldEJ5SURLaW5kIGtpbmQpCkBAIC0xNTgsNiArMTcyLDkgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKIAorICAgIGlmIChraW5kID09
IEdldEJ5SURLaW5kOjpQdXJlKQorICAgICAgICBSRUxFQVNFX0FTU0VSVChzbG90LmlzVmFsdWUo
KSB8fCBzbG90LmlzVW5zZXQoKSk7CisKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QWNjZXNzQ2FzZT4g
bmV3Q2FzZTsKIAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CkBAIC0yNjUsNyArMjgyLDcgQEAgc3RhdGljIElubGluZUNhY2hlQWN0aW9uIHRyeUNh
Y2hlR2V0QnlJRAogICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUN1c3RvbSgpICYmIHNsb3Qu
ZG9tSklUKCkpCiAgICAgICAgICAgICBkb21KSVQgPSBzbG90LmRvbUpJVCgpOwogCi0gICAgICAg
IGlmIChraW5kID09IEdldEJ5SURLaW5kOjpQdXJlKSB7CisgICAgICAgIGlmIChraW5kID09IEdl
dEJ5SURLaW5kOjpUcnlHZXRCeUlEIHx8IGtpbmQgPT0gR2V0QnlJREtpbmQ6OlB1cmUpIHsKICAg
ICAgICAgICAgIEFjY2Vzc0Nhc2U6OkFjY2Vzc1R5cGUgdHlwZTsKICAgICAgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKSkKICAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzQ2Fz
ZTo6TG9hZDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAy
MDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRC
eUlES2luZCB7CiAgICAgTm9ybWFsLAorICAgIFRyeUdldEJ5SUQsCiAgICAgUHVyZQogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292027</attachid>
            <date>2016-10-18 19:24:00 -0700</date>
            <delta_ts>2016-10-20 15:39:52 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>27387</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCBy
ZXNldEJ5R0MoZmFsc2UpCiAgICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29u
c2lkZXJlZChmYWxzZSkKKyAgICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0y
MTYsNyArMjE3LDEwIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoK
ICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6
OkdldFB1cmU6CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEOgorICAgICAgICByZXNl
dEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlJREtpbmQ6OlRyeUdldEJ5SUQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1cmVHZXQ6CiAgICAgICAgIHJlc2V0
R2V0QnlJRChjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUlES2luZDo6UHVyZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDIwNzQ3
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNz
OwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldCwKLSAgICBHZXRQ
dXJlLAorICAgIFRyeUdldEJ5SUQsCisgICAgUHVyZUdldCwKICAgICBQdXQsCiAgICAgSW4KIH07
CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVzZXRCeUdDIDogMTsKICAg
ICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9vbCBldmVyQ29uc2lkZXJlZCA6IDE7Cisg
ICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9OwogCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRT
dHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0
dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjA3NDc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICBpZiAoIW5vZGUtPnByZWRpY3Rp
b24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDggQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFi
c3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgY2xvYmJl
cldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAgaWYg
KG5vZGUtPm9wKCkgIT0gUHVyZUdldEJ5SWQpCisgICAgICAgICAgICBjbG9iYmVyV29ybGQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUp
Lm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDc0
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzI5Myw4ICszMjkzLDEwIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmhhbmRsZUdldEJ5SWQoCiAgICAgTm9kZVR5cGUgZ2V0QnlJZDsKICAgICBpZiAodHlwZSA9PSBB
Y2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgIGdldEJ5SWQgPSBnZXRCeUlkU3RhdHVzLm1ha2VzQ2Fs
bHMoKSA/IEdldEJ5SWRGbHVzaCA6IEdldEJ5SWQ7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKHR5
cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCkKICAgICAgICAgZ2V0QnlJZCA9IFRyeUdldEJ5
SWQ7CisgICAgZWxzZQorICAgICAgICBnZXRCeUlkID0gUHVyZUdldEJ5SWQ7CiAKICAgICAvLyBT
cGVjaWFsIHBhdGggZm9yIGN1c3RvbSBhY2Nlc3NvcnMgc2luY2UgY3VzdG9tJ3Mgb2Zmc2V0IGRv
ZXMgbm90IGhhdmUgYW55IG1lYW5pbmdzLgogICAgIC8vIFNvLCB0aGlzIGlzIGNvbXBsZXRlbHkg
ZGlmZmVyZW50IGZyb20gU2ltcGxlIG9uZS4gQnV0IHdlIGhhdmUgYSBjaGFuY2UgdG8gb3B0aW1p
emUgaXQgd2hlbiB3ZSB1c2UgRE9NSklULgpAQCAtNDM0Nyw4ICs0MzQ5LDE4IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAg
ICAgICAgICAgICBjdXJyZW50Q29kZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNz
VHlwZSB0eXBlID0gb3BfdHJ5X2dldF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6Okdl
dFB1cmUgOiBBY2Nlc3NUeXBlOjpHZXQ7Ci0gICAgICAgICAgICAKKyAgICAgICAgICAgIEFjY2Vz
c1R5cGUgdHlwZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF90cnlfZ2V0X2J5X2lk
KSAKKyAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRDsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2Vy
KG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogaW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fc3R1Yklu
Zm9zLmdldChjdXJyZW50Q29kZU9yaWdpbigpKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5mbyAm
JiBpbmZvLT5ldmVyQ29uc2lkZXJlZCAmJiAhaW5mby0+ZGlkU2lkZUVmZmVjdHMpCisgICAgICAg
ICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NUeXBlOjpQdXJlR2V0OworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OkdldDsKKyAgICAg
ICAgICAgIH0KKwogICAgICAgICAgICAgaGFuZGxlR2V0QnlJZCgKICAgICAgICAgICAgICAgICBj
dXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlm
aWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBlKTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQs
NiArNDk0LDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5j
aGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAg
ICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAgICAgIC8vIEZJWE1FOiBDYW4gd2UgZ2V0IG1vcmUg
cHJlY2lzZSBvbiB3aGF0IHdlIHJlYWQ/CisgICAgICAgIHJlYWQoSGVhcCk7CisKKyAgICAgICAg
QWJzdHJhY3RIZWFwIGhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCkpOworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIGhlYXAsIG5v
ZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFu
dEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00NDgsNiArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1cmVHZXRCeUlk
OgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkRmx1
c2g6IHsKICAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkocmV2aXNpb24gMjA3
NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC05OCw2ICs5OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIEFyaXRoTG9nOgogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAgY2FzZSBU
cnlHZXRCeUlkOgorICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAg
IGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc0
NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24g
cmVhZGluZyB0aGUKQEAgLTExOTQsNyArMTE5NSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnNo
b3VsZFNwZWN1bGF0ZUNlbGwoKSkKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVH
ZXRCeUlkIHx8IG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsKCkpCiAgICAgICAg
ICAgICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnZh
bGlkYXRpb25Qb2ludEluamVjdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRhdGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCShy
ZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludmFsaWRh
dGlvblBvaW50SW5qZWN0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCw3ICs4OCw3
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX29yaWdpblRoYXRIYWRGaXJlID0gQ29kZU9yaWdp
bigpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAod3JpdGVzT3ZlcmxhcChtX2dy
YXBoLCBub2RlLCBXYXRjaHBvaW50X2ZpcmUpKQorICAgICAgICBpZiAod3JpdGVzT3ZlcmxhcCht
X2dyYXBoLCBub2RlLCBXYXRjaHBvaW50X2ZpcmUpIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5
SWQpIC8vIEZJWE1FOiByZW1vdmUgV2F0Y2hwb2ludF9maXJlIGhlYXAgYW5kIGRlZmluZSBhIGZ1
bmN0aW9uIHRoYXQgc3BlY2lhbCBjYXNlcyBzb21lIG5vZGVzLgogICAgICAgICAgICAgbV9vcmln
aW5UaGF0SGFkRmlyZSA9IG5vZGUtPm9yaWdpbi5mb3JFeGl0OwogICAgIH0KICAgICAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTExLDYg
KzkxMSw3IEBAIHB1YmxpYzoKICAgICAgICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2Ug
VHJ5R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgorICAgICAgICBjYXNlIFB1cmVHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0
aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0QnlJZDoKQEAgLTE0MjEsNiArMTQyMiw3IEBAIHB1Ymxp
YzoKICAgICAgICAgY2FzZSBBcml0aENlaWw6CiAgICAgICAgIGNhc2UgQXJpdGhUcnVuYzoKICAg
ICAgICAgY2FzZSBHZXREaXJlY3RQbmFtZToKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAg
ICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2Vu
ZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5v
ZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFB1cmVHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWRXaXRoVGhpcywgTm9kZVJlc3VsdEpT
IHwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlz
aW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblBy
b3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODIsNiArNjgyLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgY2FzZSBSZWdFeHBUZXN0OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2U6CiAgICAgICAgIGNhc2UgU3RyaW5nUmVwbGFjZVJlZ0V4cDoKKyAgICAgICAgY2FzZSBQdXJl
R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVz
aDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNpb24gMjA3NDc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5OSw2ICsxOTksNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUm
IHN0CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNl
IERlbGV0ZUJ5VmFsOgorICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgog
ICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDggKzE3OSwxMSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIHNsb3dDYXNl
cy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQ
YXRoSnVtcCgpKTsKICAgICAKKyAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSB0eXBlID09IEFj
Y2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSA6CisgICAgICAgIHR5cGUg
PT0gQWNjZXNzVHlwZTo6UHVyZUdldCA/IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUgOiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisKICAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1Bh
dGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0
ID8gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplIDogb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXpl
LAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIHNsb3dQYXRoRnVuY3Rpb24sCiAgICAgICAgIHNw
aWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCiAgICAgICAg
IHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRp
Zmllck51bWJlcikpOwogICAgIApAQCAtNDIzNSw2ICs0MjM4LDIxIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAg
Y2FzZSBQdXJlR2V0QnlJZDogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KworICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgIEdQUlJlZyBy
ZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdl
dCk7CisKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCBu
dWxscHRyLCBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdEdQ
UikpOworCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAg
YnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgaWYgKCFu
b2RlLT5wcmVkaWN0aW9uKCkpIHsKICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhl
Y3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNp
b24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMDMsNyArMTAwMyw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE4KIAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVk
VG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9k
ZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmll
ck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6
VHJ5R2V0QnlJRCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBE
YXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdl
dEJ5SWQoTgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBub3RDZWxsLCBEb250U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBj
YWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3Ms
IG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBBY2Nlc3NUeXBl
OjpUcnlHZXRCeUlEKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUs
IERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJl
YWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMu
Y3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBpbmxpbmUg
Q2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBOZXdBcnJheVdpdGhT
aXplOgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CisgICAgY2FzZSBQ
dXJlR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRo
VGhpczoKICAgICBjYXNlIFRvVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIz
LDcgKzYyMywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0cnVjdHVyZSgp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKLSAgICAgICAg
ICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICAgICAgY29t
cGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKKyAgICAgICAgICAgIGNvbXBpbGVHZXRCeUlkKEFj
Y2Vzc1R5cGU6OlB1cmVHZXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0
QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CkBAIC0yNzg4LDcgKzI3OTEsNyBAQCBw
cml2YXRlOgogICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZSB0eXBlKQog
ICAgIHsKLSAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8IHR5cGUgPT0g
QWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6
OkdldCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6OlRyeUdldEJ5SUQgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpQdXJlR2V0KTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgewogICAgICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0yODE1LDYgKzI4MTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5j
dGlvbjsKICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkKICAgICAgICAg
ICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAg
ICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWM7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWM7CiAKQEAgLTg4MzgsNiArODg0Myw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3B0aW1pemF0aW9uRnVu
Y3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpH
ZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCkBA
IC04ODU5LDYgKzg4NjYsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgIH0pOwogCisgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQp
CisgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291
dC5pc1plcm82NChwYXRjaHBvaW50KSk7CisKICAgICAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiAg
ICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw2ICsxNzgsMzMgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1Yklu
Zm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
KQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNl
ciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgQVNTRVJUKGlzT3B0aW1pemluZ0pJVChleGVjLT5j
b2RlQmxvY2soKS0+aml0VHlwZSgpKSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRp
Zmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0
cnVlOworCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7Cisg
ICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxsKCkgfHwgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUoKnZtKS0+dHlwZUluZm8oKS5vdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworCisgICAgUHJvcGVydHlTbG90
IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKKyAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsK
KworCisgICAgLy8gRklYTUU6IGNoZWNrIGZvciBub24gYmFzZSBjZWxsIGFuZCBhbHNvIG5vdCBl
ZmZlY3RmdWwgbmljZSBmb3IgdGhhdC4KKyAgICBpZiAoc2xvdC5pc0FjY2Vzc29yKCkgfHwgc2xv
dC5pc0N1c3RvbSgpIHx8IHNsb3QuaXNDdXN0b21BY2Nlc3NvcigpIHx8IHNsb3QuaXNUYWludGVk
QnlPcGFxdWVPYmplY3QoKSkgeworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFs
dWUoKSk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlQoc2xvdC5pc1ZhbHVlKCkgfHwgc2xv
dC5pc1Vuc2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5pc1ZhbHVlKCkg
PyBzbG90LmdldFZhbHVlKGV4ZWMsIHVpZCkgOiBqc1VuZGVmaW5lZCgpKTsKK30KIAogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7
CkBAIC0xOTIsNiArMjE5LDMwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHIKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsK
IH0KIAorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdl
bmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgQVNTRVJUKGlzT3B0aW1pemluZ0pJ
VChleGVjLT5jb2RlQmxvY2soKS0+aml0VHlwZSgpKSk7CisKKyAgICBJZGVudGlmaWVyIGlkZW50
ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsKKworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgIGlmICghYmFzZVZhbHVlLmlzQ2VsbCgpIHx8
IGJhc2VWYWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCp2bSktPnR5cGVJbmZvKCkub3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90KCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNW
YWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6
SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIC8vIEZJWE1FOiBjaGVjayBmb3Igbm9uIGJh
c2UgY2VsbCBhbmQgYWxzbyBub3QgZWZmZWN0ZnVsIG5pY2UgZm9yIHRoYXQuCisKKyAgICBpZiAo
c2xvdC5pc0FjY2Vzc29yKCkgfHwgc2xvdC5pc0N1c3RvbSgpIHx8IHNsb3QuaXNDdXN0b21BY2Nl
c3NvcigpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkgeworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NF
UlQoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc2xvdC5pc1ZhbHVlKCkgPyBzbG90LmdldFZhbHVlKGV4ZWMsIHVpZCkgOiBqc1Vu
ZGVmaW5lZCgpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1
YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAg
ICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkBAIC0yMDMsMTEgKzI1NCw0MiBAQCBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2Fj
aGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpICYmICFzbG90LmlzVGFpbnRlZEJ5T3Bh
cXVlT2JqZWN0KCkgJiYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8IHNsb3QuaXNDYWNoZWFi
bGVHZXR0ZXIoKSB8fCBzbG90LmlzVW5zZXQoKSkpCi0gICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4
ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlB1cmUp
OworICAgICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAq
c3R1YkluZm8sIEdldEJ5SURLaW5kOjpUcnlHZXRCeUlEKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRT
dHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBBU1NFUlQoaXNPcHRpbWl6
aW5nSklUKGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRUeXBlKCkpKTsKKworICAgIElkZW50aWZpZXIg
aWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOworCisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgaWYgKCFiYXNlVmFsdWUuaXNDZWxs
KCkgfHwgYmFzZVZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKnZtKS0+dHlwZUluZm8oKS5vdmVy
cmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QoKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKCkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKKyAgICBiYXNlVmFsdWUuZ2V0
UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKKworCisgICAgLy8gRklYTUU6IGNoZWNr
IGZvciBub24gYmFzZSBjZWxsIGFuZCBhbHNvIG5vdCBlZmZlY3RmdWwgbmljZSBmb3IgdGhhdC4K
KworICAgIGlmIChzbG90LmlzQWNjZXNzb3IoKSB8fCBzbG90LmlzQ3VzdG9tKCkgfHwgc2xvdC5p
c0N1c3RvbUFjY2Vzc29yKCkgfHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKSB7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNWYWx1ZSgpKTsKKyAgICB9CisKKyAgICBS
RUxFQVNFX0FTU0VSVChzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSk7CisKKyAgICBp
ZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkp
ICYmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkpCisgICAgICAg
IHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywg
R2V0QnlJREtpbmQ6OlB1cmUpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90Lmlz
VmFsdWUoKSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgdWlkKSA6IGpzVW5kZWZpbmVkKCkpOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2Us
IFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgU3VwZXJTYW1wbGVyU2NvcGUgc3VwZXJT
YW1wbGVyU2NvcGUoZmFsc2UpOwpAQCAtMjIyLDcgKzMwNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCh2bSwgdWlkKTsKICAgICAKICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlv
bkdldEJ5SWQsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKLSAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAg
IHN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0cyB8PSBzbG90LmlzQWNjZXNzb3IoKSB8fCBzbG90Lmlz
Q3VzdG9tKCkgfHwgIWJhc2VWYWx1ZS5pc0NlbGwoKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMjUwLDcgKzMzNCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoYmFzZSk7CiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0
aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKIAorICAgIHN0dWJJ
bmZvLT5kaWRTaWRlRWZmZWN0cyB8PSAhYmFzZVZhbHVlLmlzQ2VsbCgpOworCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBb
Jl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkgLT4gSlNWYWx1ZSB7CisgICAgICAg
IHN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0cyB8PSBzbG90LmlzQWNjZXNzb3IoKSB8fCBzbG90Lmlz
Q3VzdG9tKCk7CisKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmcoYmFzZVZh
bHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMs
IGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6Ok5vcm1hbCk7
CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpIDoganNV
bmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9w
ZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYgKzMzMCw5IEBAIGludDMyX3QgSklU
X09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVu
Y29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemUoRXhl
Y1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0
ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBs
KikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25H
ZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFj
Y2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk0LDcg
KzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAg
IEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdp
bihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBS
ZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlkZW50LT5p
bXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1Qx
LCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBK
U1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDAp
LCBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhp
cyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRz
LmFwcGVuZChnZW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0
eUFjY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQ
cm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzksNyAr
NTc5LDcgQEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChJbnN0cnVjdAogCiAgICAg
SklUR2V0QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2lu
KG1fYnl0ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KG1fYnl0ZWNvZGVPZmZzZXQpLCBSZWdp
c3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBs
KCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpH
ZXRQdXJlKTsKKyAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6OlRyeUdldEJ5SUQpOwogICAgIGdlbi5nZW5lcmF0
ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwog
ICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1JlcGF0Y2guY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
UmVwYXRjaC5jcHAJKHJldmlzaW9uIDIwNzQ3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvUmVwYXRjaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCwxNiArMTM0LDMwIEBAIHN0YXRp
YyBib29sIGZvcmNlSUNGYWlsdXJlKEV4ZWNTdGF0ZSopCiAKIGlubGluZSBKX0pJVE9wZXJhdGlv
bl9FU3NpSkkgYXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEdldEJ5SURLaW5k
IGtpbmQpCiB7Ci0gICAgaWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6Ok5vcm1hbCkKKyAgICBzd2l0
Y2ggKGtpbmQpIHsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpOb3JtYWw6CiAgICAgICAgIHJldHVy
biBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZTsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpUcnlHZXRCeUlEOgorICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0QnlJREtpbmQ6
OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogaW5s
aW5lIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rp
b24oR2V0QnlJREtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6Tm9y
bWFsKQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJREtpbmQ6Ok5vcm1hbDoK
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblRy
eUdldEJ5SWQ7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5R2V0QnlJRDoKKyAgICAgICAgcmV0
dXJuIG9wZXJhdGlvblRyeUdldEJ5SWQ7CisgICAgY2FzZSBHZXRCeUlES2luZDo6UHVyZToKKyAg
ICAgICAgcmV0dXJuIG9wZXJhdGlvblB1cmVHZXRCeUlkOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogc3RhdGljIElubGluZUNhY2hlQWN0
aW9uIHRyeUNhY2hlR2V0QnlJRChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFByb3BlcnR5U2xvdCYgc2xvdCwg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvLCBHZXRCeUlES2luZCBraW5kKQpAQCAtMTU4LDYg
KzE3Miw5IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAKKyAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6UHVyZSkKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpOworCiAgICAg
c3RkOjp1bmlxdWVfcHRyPEFjY2Vzc0Nhc2U+IG5ld0Nhc2U7CiAKICAgICBpZiAocHJvcGVydHlO
YW1lID09IHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkgewpAQCAtMjY1LDcgKzI4Miw3IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgaWYgKHNsb3Qu
aXNDYWNoZWFibGVDdXN0b20oKSAmJiBzbG90LmRvbUpJVCgpKQogICAgICAgICAgICAgZG9tSklU
ID0gc2xvdC5kb21KSVQoKTsKIAotICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6UHVy
ZSkgeworICAgICAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6VHJ5R2V0QnlJRCB8fCBraW5k
ID09IEdldEJ5SURLaW5kOjpQdXJlKSB7CiAgICAgICAgICAgICBBY2Nlc3NDYXNlOjpBY2Nlc3NU
eXBlIHR5cGU7CiAgICAgICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpCiAgICAg
ICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6OkxvYWQ7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1JlcGF0Y2guaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guaAkocmV2aXNpb24gMjA3NDc3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgR2V0QnlJREtpbmQgewogICAgIE5vcm1hbCwKKyAgICBU
cnlHZXRCeUlELAogICAgIFB1cmUKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyMDc0NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAwLDYgKzMwMCw3
IEBAIHN0YXRpYyB2b2lkIHNjYWxlSklUUG9saWN5KCkKIAogc3RhdGljIHZvaWQgcmVjb21wdXRl
RGVwZW5kZW50T3B0aW9ucygpCiB7CisgICAgT3B0aW9uczo6dXNlRG9sbGFyVk0oKSA9IHRydWU7
CiAjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIE9wdGlvbnM6OnZhbGlkYXRlREZHRXhjZXB0aW9u
SGFuZGxpbmcoKSA9IHRydWU7CiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292271</attachid>
            <date>2016-10-20 15:39:52 -0700</date>
            <delta_ts>2016-10-21 19:24:25 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>28096</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCBy
ZXNldEJ5R0MoZmFsc2UpCiAgICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29u
c2lkZXJlZChmYWxzZSkKKyAgICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0y
MTYsNyArMjE3LDEwIEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoK
ICAgICB9CiAKICAgICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6
OkdldFB1cmU6CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEOgorICAgICAgICByZXNl
dEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlJREtpbmQ6OlRyeUdldEJ5SUQpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1cmVHZXQ6CiAgICAgICAgIHJlc2V0
R2V0QnlJRChjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUlES2luZDo6UHVyZSk7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9uIDIwNzYy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIFBvbHltb3JwaGljQWNjZXNz
OwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldCwKLSAgICBHZXRQ
dXJlLAorICAgIFRyeUdldEJ5SUQsCisgICAgUHVyZUdldCwKICAgICBQdXQsCiAgICAgSW4KIH07
CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJvb2wgcmVzZXRCeUdDIDogMTsKICAg
ICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9vbCBldmVyQ29uc2lkZXJlZCA6IDE7Cisg
ICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9OwogCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRT
dHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0
dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMjA3NjIyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsK
ICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICBpZiAoIW5vZGUtPnByZWRpY3Rp
b24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEwIEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxB
YnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIGNsb2Ji
ZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGlm
IChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlkKQorICAgICAgICAgICAgY2xvYmJlclN0cnVjdHVy
ZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY2xvYmJlcldvcmxk
KG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShu
b2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFycmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZl
ZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2FuQmVjb21lR2V0QXJyYXlMZW5ndGgoR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5vcCgpICE9IEdldEJ5SWQpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHVpZCA9IGdyYXBoLmlkZW50aWZpZXJzKClbbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICByZXR1cm4gdWlkID09IGdyYXBoLm1fdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsKKyAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRCeUlk
IHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpIHsKKyAgICAgICAgYXV0byB1aWQgPSBncmFw
aC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CisgICAgICAgIHJldHVy
biB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFycmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5MSwxMCArMzI5MSwxOSBAQCB2b2lk
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAgIH0KICAgICAKICAgICBOb2RlVHlw
ZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldDoKICAgICAgICAgZ2V0QnlJZCA9IGdl
dEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJZEZsdXNoIDogR2V0QnlJZDsKLSAgICBl
bHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRDoKICAg
ICAgICAgZ2V0QnlJZCA9IFRyeUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6UHVyZUdldDoKKyAgICAgICAgZ2V0QnlJZCA9IFB1cmVHZXRCeUlkOworICAgICAg
ICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KIAogICAgIC8vIFNwZWNpYWwgcGF0aCBmb3IgY3VzdG9tIGFjY2Vzc29ycyBz
aW5jZSBjdXN0b20ncyBvZmZzZXQgZG9lcyBub3QgaGF2ZSBhbnkgbWVhbmluZ3MuCiAgICAgLy8g
U28sIHRoaXMgaXMgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSBTaW1wbGUgb25lLiBCdXQgd2Ug
aGF2ZSBhIGNoYW5jZSB0byBvcHRpbWl6ZSBpdCB3aGVuIHdlIHVzZSBET01KSVQuCkBAIC00MzQ3
LDcgKzQzNTYsMTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdD
b2RlQmxvY2ssCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3Ms
IG1fZGZnU3R1YkluZm9zLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVp
ZCk7Ci0gICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBvcF90cnlfZ2V0X2J5X2lkID09IG9w
Y29kZUlEID8gQWNjZXNzVHlwZTo6R2V0UHVyZSA6IEFjY2Vzc1R5cGU6OkdldDsKKyAgICAgICAg
ICAgIEFjY2Vzc1R5cGUgdHlwZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF90cnlf
Z2V0X2J5X2lkKSAKKyAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJ
RDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2Nr
ZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAg
ICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3VycmVudENvZGVPcmlnaW4o
KS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBpbmZv
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVPcmlnaW4oYnl0ZWNvZGVJ
bmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8tPmV2ZXJDb25zaWRlcmVk
ICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IEFj
Y2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90cnlfZ2V0X2J5X2lkID8g
T1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5
X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJ
KHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJl
cml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDMxIEBAIHZvaWQgY2xvYmJlcml6
ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihJc0Z1
bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAg
ICAgIHJlYWQoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgcmVhZChKU0NlbGxfdHlwZUlu
Zm9GbGFncyk7CisgICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIHJl
YWQoSlNDZWxsX2luZGV4aW5nVHlwZSk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5
KTsKKyAgICAgICAgcmVhZChNaXNjRmllbGRzKTsKKyAgICAgICAgQWJzdHJhY3RIZWFwIGhlYXAo
TmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkpOworICAgICAgICByZWFk
KGhlYXApOworCisgICAgICAgIHdyaXRlKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdy
aXRlKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZv
VHlwZSk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICB3cml0
ZShXYXRjaHBvaW50X2ZpcmUpOworICAgICAgICB3cml0ZShNaXNjRmllbGRzKTsKKyAgICAgICAg
Ly8gRklYTUU6IFdpbGwgdGhpcyBhY3R1YWxseSBiZSB0aGUgY2FzZSBpZiB3ZSBhbGxvY2F0ZSBz
b21lIG91dCBvZiBsaW5lIHN0b3JhZ2U/CisgICAgICAgIHdyaXRlKEpTT2JqZWN0X2J1dHRlcmZs
eSk7CisgICAgICAgIHdyaXRlKEJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpOworICAgICAgICB3cml0
ZShCdXR0ZXJmbHlfdmVjdG9yTGVuZ3RoKTsKKworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5h
bWVkUHJvcGVydHlMb2MsIGhlYXAsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0
QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJl
dmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDgsOCArNDQ4LDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAg
ICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CisKICAgICAgICAgICAgICAgICBFZGdlIGNo
aWxkRWRnZSA9IG5vZGUtPmNoaWxkMSgpOwogICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0g
Y2hpbGRFZGdlLm5vZGUoKTsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVt
YmVyID0gbm9kZS0+aWRlbnRpZmllck51bWJlcigpOwpAQCAtNDU5LDYgKzQ2MSw5IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7
IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3Jl
LgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cg
dGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCisgICAg
ICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1
Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQogICAg
ICAgICAgICAgICAgICAgICB8fCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UgfHwgKGJhc2VWYWx1ZS5tX3R5cGUgJiB+U3BlY0NlbGwpKSkKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC01MTQsNiArNTE5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBt
X2ludGVycHJldGVyLmV4ZWN1dGUoaW5kZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlz
IG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBzdGF0ZSBiZWZvcmUuCiAgICAgICAgICAgICAgICAgYWxy
ZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBEb24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBm
b2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRoaXMuCiAKKyAgICAgICAgICAgICAgICBpZiAoIU9wdGlv
bnM6OnVzZUFjY2Vzc0lubGluaW5nKCkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAg
ICAgICAgICAgICAgICAgaWYgKGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VW
YWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2JiZXJlZCgpKQogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG9lc0dDLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTgsNiArOTgsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcml0aExvZzoKICAgICBjYXNl
IFZhbHVlQWRkOgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgog
ICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5
SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2Nyw2ICsxMTY3LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKKyAgICAgICAgY2FzZSBQdXJl
R2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVz
aDogewogICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRvbmUgaW4gdGhlIEJ5
dGVDb2RlUGFyc2VyIGJhc2VkIG9uIHJlYWRpbmcgdGhlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxMSw2ICs5MTEsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgY2Fz
ZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBj
YXNlIFB1dEJ5SWQ6CkBAIC0xNDIxLDYgKzE0MjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2Ug
QXJpdGhDZWlsOgogICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNhc2UgR2V0RGly
ZWN0UG5hbWU6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNp
b24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1Zh
ckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKKyAg
ICBtYWNybyhQdXJlR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhHZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJh
dGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3Bh
Z2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgyLDYgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgUmVnRXhwVGVzdDoKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgICAgICBjYXNl
IFN0cmluZ1JlcGxhY2VSZWdFeHA6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAg
IGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2Ug
R2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgVHJ5
R2V0QnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAg
ICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRX
aXRoVGhpczoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDIw
NzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw4ICsxNzksMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y2FjaGVkR2V0QnlJZChDb2RlTwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKHNsb3dQYXRo
VGFyZ2V0KTsKICAgICBzbG93Q2FzZXMuYXBwZW5kKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAg
CisgICAgYXV0byBzbG93UGF0aEZ1bmN0aW9uID0gdHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgPyBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemUgOgorICAgICAgICB0eXBlID09IEFjY2Vzc1R5cGU6OlB1
cmVHZXQgPyBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplIDogb3BlcmF0aW9uVHJ5R2V0QnlJ
ZE9wdGltaXplOworCiAgICAgYXV0byBzbG93UGF0aCA9IHNsb3dQYXRoQ2FsbCgKLSAgICAgICAg
c2xvd0Nhc2VzLCB0aGlzLCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlvbkdldEJ5
SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZSwKKyAgICAgICAgc2xvd0Nh
c2VzLCB0aGlzLCBzbG93UGF0aEZ1bmN0aW9uLAogICAgICAgICBzcGlsbE1vZGUsIEV4Y2VwdGlv
bkNoZWNrUmVxdWlyZW1lbnQ6OkNoZWNrTmVlZGVkLAogICAgICAgICByZXN1bHRHUFIsIGdlbi5z
dHViSW5mbygpLCBiYXNlR1BSLCBpZGVudGlmaWVyVUlEKGlkZW50aWZpZXJOdW1iZXIpKTsKICAg
ICAKQEAgLTQyMzUsNiArNDIzOCw0MCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6
IHsKKyAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAg
Y2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRo
aXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisKKyAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAg
ICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CisKKyAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUt
PmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFj
Y2Vzc1R5cGU6OlB1cmVHZXQpOworCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQ
Uiwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFVu
dHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
YmFzZSk7CisgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKTsKKyAgICAgICAgCisgICAgICAgICAgICBjYWNo
ZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpQ
dXJlR2V0KTsKKyAgICAgICAgCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwg
bm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAg
ICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICBp
ZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewogICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oSW5hZGVxdWF0ZUNvdmVyYWdlLCBKU1ZhbHVlUmVncygpLCAwKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShy
ZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAwMyw3ICsxMDAzLDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQoTgogCiAgICAgICAgIGJhc2UudXNlKCk7CiAK
LSAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCBy
ZXN1bHRSZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCks
IE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCksIEpJVENvbXBpbGVyOjpKdW1wKCksIE5lZWRUb1NwaWxsLCBBY2Nlc3NU
eXBlOjpUcnlHZXRCeUlEKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAg
YnJlYWs7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VHJ5R2V0QnlJZChOCiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5pZGVudGlmaWVy
TnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwsIEFjY2Vz
c1R5cGU6OlRyeUdldEJ5SUQpOwogCiAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywg
bm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAg
ICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBAIGlu
bGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIE5ld0FycmF5
V2l0aFNpemU6CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBj
YXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0QnlJ
ZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02MjMsNyArNjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3RydWN0
dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgotICAg
ICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgICAg
ICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpUcnlHZXRCeUlEKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgorICAgICAgICAgICAgY29tcGlsZUdldEJ5
SWQoQWNjZXNzVHlwZTo6UHVyZUdldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAgLTI3ODgsNyArMjc5MSw3
IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlIHR5
cGUpCiAgICAgewotICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgdHlw
ZSA9PSBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNz
VHlwZTo6R2V0IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCB8fCB0eXBlID09IEFj
Y2Vzc1R5cGU6OlB1cmVHZXQpOwogICAgICAgICBzd2l0Y2ggKG1fbm9kZS0+Y2hpbGQxKCkudXNl
S2luZCgpKSB7CiAgICAgICAgIGNhc2UgQ2VsbFVzZTogewogICAgICAgICAgICAgc2V0SlNWYWx1
ZShnZXRCeUlkKGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSksIHR5cGUpKTsKQEAgLTI4MTUsNiAr
MjgxOCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FSkkgZ2V0QnlJ
ZEZ1bmN0aW9uOwogICAgICAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAg
ICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljOwor
ICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0KQorICAgICAg
ICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlvblB1cmVHZXRCeUlkR2VuZXJpYzsK
ICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVy
YXRpb25UcnlHZXRCeUlkR2VuZXJpYzsKIApAQCAtODgzOCw2ICs4ODQzLDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBvcHRpbWl6YXRp
b25GdW5jdGlvbjsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5
cGU6OkdldCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25GdW5jdGlv
biA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcHRpbWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1p
emU7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksMzIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK0FMV0FZU19JTkxJTkUgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHB1cmVHZXRCeUlkQ29t
bW9uKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkLCBjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbnN0IFByb3BlcnR5
U2xvdCYpPiYgZnVuY3Rpb24gPSBbXSAoY29uc3QgUHJvcGVydHlTbG90JikgeyB9KQoreworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEFTU0VSVChpc09w
dGltaXppbmdKSVQoZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOworCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5
KTsKKyAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIHVpZCwgc2xvdCk7CisKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKworICAgIGlm
ICghKHNsb3QuaXNVbnNldCgpIHx8IHNsb3QuaXNWYWx1ZSgpKSB8fCBzbG90LmlzVGFpbnRlZEJ5
T3BhcXVlT2JqZWN0KCkpIHsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpldHRpc29uKFBy
b2ZpbGVyOjpKZXR0aXNvbkR1ZVRvT1NSRXhpdCk7CisgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsK
KyAgICAgICAgLy8gUGVyZm9ybSB0aGUgcmVhbCBnZXQgbm93LCB3aGljaCBtYXkgYmVoYXZlIGRp
ZmZlcmVudGx5IHRoYW4gdGhlIGFib3ZlIFZNSW5xdWlyeS4KKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIHVpZCkpOworICAgIH0KKworICAgIEFTU0VS
VCgoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpICYmICFzbG90LmlzVGFpbnRlZEJ5
T3BhcXVlT2JqZWN0KCkpOworICAgIGZ1bmN0aW9uKHNsb3QpOworICAgIGF1dG8gcmVzdWx0ID0g
SlNWYWx1ZTo6ZW5jb2RlKHNsb3QuaXNWYWx1ZSgpID8gc2xvdC5nZXRWYWx1ZShleGVjLCB1aWQp
IDoganNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKwogZXh0ZXJuICJDIiB7CiAKICNpZiBDT01QSUxFUihNU1ZDKQpA
QCAtMTY0LDYgKzE5MCwzOSBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3Ry
dWN0CiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKIH0KIAorRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBF
bmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNKiB2
bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4
ZWMpOworCisgICAgcmV0dXJuIHB1cmVHZXRCeUlkQ29tbW9uKCp2bSwgZXhlYywgYmFzZSwgdWlk
KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJ
ZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpT
VmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhl
Yy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKwor
ICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgcmV0dXJuIHB1cmVHZXRC
eUlkQ29tbW9uKCp2bSwgZXhlYywgYmFzZSwgdWlkKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSogZXhlYywg
U3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVk
U3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0dXJuIHB1cmVHZXRC
eUlkQ29tbW9uKCp2bSwgZXhlYywgYmFzZSwgdWlkLCAKKyAgICAgICAgWyZdIChjb25zdCBQcm9w
ZXJ0eVNsb3QmIHNsb3QpIHsKKyAgICAgICAgICAgIEFTU0VSVCgoc2xvdC5pc1ZhbHVlKCkgfHwg
c2xvdC5pc1Vuc2V0KCkpICYmICFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkpOworICAg
ICAgICAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFzZSk7CisgICAg
ICAgICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwgdWlkKTsK
KyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1
Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFz
ZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAg
ICAgIH0pOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdl
dEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29k
ZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CkBAIC0xNzgsNyArMjM3LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJl
UmVzdWx0KCkpOwogfQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBV
bmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpAQCAt
MjAzLDcgKzI2MSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIK
IAogICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0NhY2hlYWJs
ZVZhbHVlKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkK
LSAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0
dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMs
IGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRyeUdldEJ5
SUQpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7
CiB9CkBAIC0yMjIsNyArMjgwLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uR2UKICAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVpZCh2bSwg
dWlkKTsKICAgICAKICAgICBMT0dfSUMoKElDRXZlbnQ6Ok9wZXJhdGlvbkdldEJ5SWQsIGJhc2VW
YWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIGJvb2wgd2lsbERvU2lk
ZUVmZmVjdHMgPSAhKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSB8fCBzbG90Lmlz
VGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CisgICAgc3R1YkluZm8tPmRpZFNpZGVFZmZlY3RzIHw9
IHdpbGxEb1NpZGVFZmZlY3RzOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJp
YyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQpCkBAIC0yNTEsNiArMzEyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZQogICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZE9wdGltaXpl
LCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCksIGlkZW50KSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIFsmXSAo
Ym9vbCBmb3VuZCwgUHJvcGVydHlTbG90JiBzbG90KSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgYm9v
bCB3aWxsRG9TaWRlRWZmZWN0cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkp
IHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKTsKKyAgICAgICAgc3R1YkluZm8tPmRp
ZFNpZGVFZmZlY3RzIHw9IHdpbGxEb1NpZGVFZmZlY3RzOworCiAgICAgICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCiAgICAgICAg
ICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1Yklu
Zm8sIEdldEJ5SURLaW5kOjpOb3JtYWwpOwogICAgICAgICByZXR1cm4gZm91bmQgPyBzbG90Lmdl
dFZhbHVlKGV4ZWMsIGlkZW50KSA6IGpzVW5kZWZpbmVkKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
MCw2ICszMzAsOSBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ29uc3RydWN0CiBF
bmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoRXhlY1N0YXRl
KiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwq
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRy
eUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5n
SW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHJ5R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1
Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9J
TlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5
SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVy
ZUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRK
U1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHVi
SW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlJZEdlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUo
RXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJKHJldmlzaW9uIDIwNzYyMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU5NCw3ICs1OTQsNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlf
Z2V0X2J5X2lkKEluc3RydWN0CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAg
ICAgbV9jb2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5k
ZXgoY3VycmVudEluc3RydWN0aW9uKSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lz
dGVycygpLAotICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHko
cmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBBY2Nlc3NUeXBlOjpHZXRQdXJlKTsK
KyAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwg
SlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0QnlJRCk7CiAgICAg
Z2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFkZFNsb3dDYXNlKGdlbi5zbG93UGF0
aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2VuKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCShyZXZpc2lvbiAyMDc2
MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9n
ZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRl
eChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnN0dWJVbmF2YWlsYWJsZVJlZ2lzdGVy
cygpLAotICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpTVmFsdWVS
ZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGlkZW50LT5pbXBsKCks
IEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlH
ZXRCeUlEKTsKICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nh
c2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDc2MjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzQsMTYgKzEzNCwzMCBAQCBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUq
KQogCiBpbmxpbmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dl
dEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5
SURLaW5kOjpOb3JtYWwpCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2lu
ZDo6Tm9ybWFsOgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAg
IHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2lu
ZDo6VHJ5R2V0QnlJRDoKKyAgICAgICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6
ZTsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgorICAgICAgICByZXR1cm4gb3BlcmF0aW9u
UHVyZUdldEJ5SWRPcHRpbWl6ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICB9CiB9CiAKIGlubGluZSBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgYXBwcm9w
cmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKEdldEJ5SURLaW5kIGtpbmQpCiB7Ci0gICAgaWYg
KGtpbmQgPT0gR2V0QnlJREtpbmQ6Ok5vcm1hbCkKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAgICBj
YXNlIEdldEJ5SURLaW5kOjpOb3JtYWw6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRCeUlk
OwotICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkOworICAgIGNhc2UgR2V0QnlJREtpbmQ6
OlRyeUdldEJ5SUQ6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkOworICAgIGNh
c2UgR2V0QnlJREtpbmQ6OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJ
ZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CiB9
CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBj
b25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywgR2V0
QnlJREtpbmQga2luZCkKQEAgLTE1OCw2ICsxNzIsOSBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rp
b24gdHJ5Q2FjaGVHZXRCeUlECiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogCisgICAgaWYgKGtpbmQgPT0gR2V0
QnlJREtpbmQ6OlB1cmUpCisgICAgICAgIFJFTEVBU0VfQVNTRVJUKHNsb3QuaXNWYWx1ZSgpIHx8
IHNsb3QuaXNVbnNldCgpKTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBY2Nlc3NDYXNlPiBuZXdD
YXNlOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgp
IHsKQEAgLTI2NSw3ICsyODIsNyBAQCBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVH
ZXRCeUlECiAgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlQ3VzdG9tKCkgJiYgc2xvdC5kb21K
SVQoKSkKICAgICAgICAgICAgIGRvbUpJVCA9IHNsb3QuZG9tSklUKCk7CiAKLSAgICAgICAgaWYg
KGtpbmQgPT0gR2V0QnlJREtpbmQ6OlB1cmUpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gR2V0QnlJ
REtpbmQ6OlRyeUdldEJ5SUQgfHwga2luZCA9PSBHZXRCeUlES2luZDo6UHVyZSkgewogICAgICAg
ICAgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlOwogICAgICAgICAgICAgaWYgKHNsb3Qu
aXNDYWNoZWFibGVWYWx1ZSgpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpM
b2FkOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDIwNzYy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SURL
aW5kIHsKICAgICBOb3JtYWwsCisgICAgVHJ5R2V0QnlJRCwKICAgICBQdXJlCiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292447</attachid>
            <date>2016-10-21 19:24:13 -0700</date>
            <delta_ts>2016-10-21 20:52:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>42363</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDc3MDEpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLTIuanM6IEFkZGVkLgorICAgICAgICAoZm9v
KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisK
IDIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkIG5lZWRzIHRvIHBhc3MgaW4gTmVlZHNU
b1NwaWxsIGFsb25nIGJvdGggdGhlIGNlbGwgc3BlY3VsYXRpb24gYW5kIHVudHlwZWQgc3BlY3Vs
YXRpb24gcGF0aApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cHVyZS1nZXQtYnktaWQtY3NlLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
ZnVuY3Rpb24gZm9vKG8sIGMpIHsKKyAgICBpZiAoby5mKSB7CisgICAgICAgIGxldCBzdW0gPSAw
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGM7IGkrKykKKyAgICAgICAgICAgIHN1bSAr
PSBvLmY7CisgICAgICAgIHJldHVybiBzdW07CisgICAgfQorfQorbm9JbmxpbmUoZm9vKTsKKwor
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKK2xldCBvYmplY3RzID0gW107Citjb25zdCBvYmplY3RD
b3VudCA9IDIwOworZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgaSsrKSB7CisgICAg
bGV0IG9iaiA9IHt9OworICAgIGZvciAobGV0IGogPSAwOyBqIDwgaSAqIDI7IGorKykgeworICAg
ICAgICBvYmpbImoiICsgal0gPSBqOworICAgIH0KKyAgICBvYmouZiA9IDIwOworICAgIG9iamVj
dHMucHVzaChvYmopOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewor
ICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaiwg
MTUwKTsKK30KKworY29uc3QgdmVyYm9zZSA9IGZhbHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJp
bnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1
cmUtZ2V0LWJ5LWlkLWNzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9wdXJlLWdldC1ieS1pZC1jc2UuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjYgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8u
ZiArIG8uZiArIG8uZiArIG8uZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBE
YXRlLm5vdygpOworbGV0IG9iamVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citm
b3IgKGxldCBpID0gMDsgaSA8IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIg
KyBqXSA9IGo7CisgICAgfQorICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmog
PSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1vbi1ub24tb2JqZWN0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1v
YmplY3QuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQt
b24tbm9uLW9iamVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
YXNzZXJ0aW9uLiIpCit9CisKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgYXNzZXJ0KG8ubGVuZ3Ro
ID09PSBvLmxlbmd0aCk7CisgICAgcmV0dXJuIG8ubGVuZ3RoOworfQorbm9JbmxpbmUoZm9vKTsK
KworbGV0IGl0ZW1zID0gW107Citjb25zdCBudW1JdGVtcyA9IDMwOworZm9yIChsZXQgaSA9IDA7
IGkgPCBudW1JdGVtczsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IGk7IGorKykgeworICAgICAgICBvW2ogKyAiaiJdID0gajsKKyAgICB9CisgICAgby5s
ZW5ndGggPSAyOworICAgIGl0ZW1zLnB1c2gobyk7Cit9IAorCitpdGVtcy5wdXNoKCJzdCIpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgYXNzZXJ0KGZvbyhpdGVtc1tp
ICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOworCitOdW1iZXIucHJvdG90eXBlLmxlbmd0aCA9IDI7
CitpdGVtcy5wdXNoKDQyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykKKyAg
ICBhc3NlcnQoZm9vKGl0ZW1zW2kgJSBpdGVtcy5sZW5ndGhdKSA9PT0gMik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MiBAQAorMjAxNi0xMC0y
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBXZSBzaG91bGQg
aGF2ZSBhIHdheSBvZiBwcm9maWxpbmcgd2hlbiBhIGdldF9ieV9pZCBpcyBwdXJlIGFuZCB0byBl
bWl0IGEgUHVyZUdldEJ5SWQgaW4gdGhlIERGRy9GVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBHZXRCeUlkIG5vZGUg
aW4gdGhlIERGRyBjYWxsZWQgUHVyZUdldEJ5SWQuIFdlIGVtaXQgYQorICAgICAgICBQdXJlR2V0
QnlJZCB3aGVuIHdlIHByb2ZpbGUgdGhhdCBhIGdldF9ieV9pZCBpbiB0aGUgYmFzZWxpbmUgbmV2
ZXIgZG9lcworICAgICAgICBzaWRlIGVmZmVjdHMuIFB1cmVHZXRCeUlkIHNwZWN1bGF0ZXMgb24g
dGhlIGZhY3QgdGhhdCBpdCB3b24ndCBkbyBzaWRlCisgICAgICAgIGVmZmVjdHMuIElmIGl0IHJl
YWxpemVzIHRoYXQgaXQgbXVzdCBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaXQgd2lsbCBwZXJmb3Jt
CisgICAgICAgIHRoZSBzaWRlIGVmZmVjdCwgYnV0IGFsc28gaW52YWxpZGF0ZSB0aGUgQ29kZUJs
b2NrIHRoYXQgY29tcGlsZWQgaXQuCisgICAgICAgIFRoaXMgYWxsb3dzIHVzIHRvIGhhdmUgc3Ry
aWN0ZXIgY2xvYmJlcml6ZSBydWxlcyBmb3IgUHVyZUdldEJ5SWQgd2hpY2gKKyAgICAgICAgbW9k
ZWwgaG93IGdldE93blByb3BlcnR5U2xvdChWTUlucXVpcnkpIGJlaGF2ZXMuIFRoaXMgbWVhbnMg
dGhhdCBQdXJlR2V0QnlJZAorICAgICAgICBjYW4gYmUgQ1NFZCB3aXRoIGVhY2ggb3RoZXIsIGFu
ZCB0aGF0IG90aGVyIHRoaW5ncyBhcmUgbW9yZSBsaWtlbHkgdG8KKyAgICAgICAgYmUgQ1NFZCBh
cm91bmQgYSBQdXJlR2V0QnlJZC4gVG8gcHJvZmlsZSBpZiBhIGdldF9ieV9pZCBkb2VzIHNpZGUK
KyAgICAgICAgZWZmZWN0cywgSSd2ZSBhZGRlZCBhbiBleHRyYSBiaXQgaW50byBTdHJ1Y3R1cmVT
dHViSW5mbyB0aGF0IHdlIHdyaXRlCisgICAgICAgIHRvIHdoZW4gcGVyZm9ybWluZyBhIGdldF9i
eV9pZCBzbG93IHBhdGggY2FsbC4gSWYgd2Ugbm90aWNlIHRoYXQgd2UKKyAgICAgICAgbmV2ZXIg
ZG8gZWZmZWN0cywgaW5zaWRlIHRoZSBCeXRlQ29kZVBhcnNlciwgd2Ugd2lsbCBlbWl0IGEKKyAg
ICAgICAgUHVyZUdldEJ5SWQgaW5zdGVhZCBvZiBhIEdldEJ5SWQuCisKKyAgICAgICAgKiBieXRl
Y29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJ
bmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZv
OjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAg
ICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6
REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVj
dHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNhbkJlY29tZUdldEFycmF5TGVuZ3RoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAg
KiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAg
ICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6Y29udmVydFRvR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
OmNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhh
c0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9u
KToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGlj
dGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVRyeUdldEJ5SWQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAg
ICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6
CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRCeUlkKToK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6CisgICAgICAg
ICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXJlR2V0QnlJZENvbW1v
bik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQvSklUUHJv
cGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9p
ZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgICogaml0L1JlcGF0Y2gu
Y3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24pOgorICAg
ICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmg6Cisg
ICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHA6CisgICAgICAgIChX
VEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25S
ZWFzb24uaDoKKwogMjAxNi0xMC0yMCAgQ2FpdGxpbiBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29t
PgogCiAgICAgICAgIFtKU0NdIHRocm93IFR5cGVFcnJvciB3aGVuIGNvbnN0cnVjdGluZyBkeW5h
bWljYWxseSBjcmVhdGVkIEpTR2VuZXJhdG9yRnVuY3Rpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2aXNp
b24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0
dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBTdHJ1Y3R1cmVTdHVi
SW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCByZXNldEJ5R0MoZmFsc2UpCiAgICAg
LCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29uc2lkZXJlZChmYWxzZSkKKyAgICAs
IGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0yMTYsNyArMjE3LDEwIEBAIHZvaWQg
U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoKICAgICB9CiAKICAgICBzd2l0Y2gg
KGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFB1cmU6CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpUcnlHZXQ6CisgICAgICAgIHJlc2V0R2V0QnlJRChjb2RlQmxvY2ssICp0aGlz
LCBHZXRCeUlES2luZDo6VHJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBl
OjpQdXJlR2V0OgogICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0QnlJ
REtpbmQ6OlB1cmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYsOCBA
QCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzczsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDogaW50
OF90IHsKICAgICBHZXQsCi0gICAgR2V0UHVyZSwKKyAgICBUcnlHZXQsCisgICAgUHVyZUdldCwK
ICAgICBQdXQsCiAgICAgSW4KIH07CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAgIGJv
b2wgcmVzZXRCeUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9vbCBl
dmVyQ29uc2lkZXJlZCA6IDE7CisgICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9OwogCiBp
bmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0dXJl
U3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2
aXNpb24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdElu
dGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5vZGUo
bm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVHZXRC
eUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAg
ICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEwIEBAIGJvb2wg
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2Ji
ZXJMaW1pdCk7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlkKQorICAgICAg
ICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0
KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVhazsK
ICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFycmF5TW9kZSBB
cnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2FuQmVjb21lR2V0
QXJyYXlMZW5ndGgoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogewotICAgIGlmIChub2RlLT5v
cCgpICE9IEdldEJ5SWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHVpZCA9IGdy
YXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICByZXR1cm4g
dWlkID09IGdyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsKKyAgICBpZiAo
bm9kZS0+b3AoKSA9PSBHZXRCeUlkIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpIHsKKyAg
ICAgICAgYXV0byB1aWQgPSBncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKV07CisgICAgICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGguaW1wbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFycmF5TW9kZSBB
cnJheU1vZGU6OnJlZmluZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI5
MSwxMCArMzI5MSwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAogICAg
IH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09IEFjY2Vzc1R5
cGU6OkdldCkKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldDoK
ICAgICAgICAgZ2V0QnlJZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJZEZs
dXNoIDogR2V0QnlJZDsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNjZXNz
VHlwZTo6VHJ5R2V0OgogICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXJlR2V0OgorICAgICAgICBnZXRCeUlkID0gUHVy
ZUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgLy8gU3BlY2lhbCBwYXRoIGZvciBj
dXN0b20gYWNjZXNzb3JzIHNpbmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBoYXZlIGFueSBt
ZWFuaW5ncy4KICAgICAvLyBTbywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9tIFNp
bXBsZSBvbmUuIEJ1dCB3ZSBoYXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdoZW4gd2UgdXNl
IERPTUpJVC4KQEAgLTQxODIsNyArNDE5MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAgTm9k
ZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblszXS51
Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5SWQgPSBmYWxzZTsK
KyAgICAgICAgICAgIGJvb2wgY29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworICAgICAgICAgICAg
Ym9vbCBjb21waWxlQXNQdXJlR2V0QnlJZCA9IGZhbHNlOwogICAgICAgICAgICAgR2V0QnlJZFN0
YXR1cyBnZXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciA9IDA7CiAgICAgICAgICAgICB7CkBAIC00MTkxLDcgKzQyMDEsOCBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdo
ZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBieVZh
bEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwgdGhl
cmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAmJiBi
eVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aCAmJiAhbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFk
SWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBjb21waWxlZEFz
R2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVBc0dldEJ5SWQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICBjb21waWxlQXNQdXJlR2V0QnlJZCA9ICFieVZhbElu
Zm8tPnN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0czsKICAgICAgICAgICAgICAgICAgICAgaWRlbnRp
Zmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJbmZvLT5jYWNo
ZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCogdWlk
ID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCkBAIC00MjA5LDkg
KzQyMjAsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbXBpbGVk
QXNHZXRCeUlkKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoY3VycmVudEluc3RydWN0
aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwgZ2V0
QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0LCBPUENPREVfTEVOR1RIKG9wX2dldF9ieV92YWwp
KTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBpbGVBc0dldEJ5SWQp
IHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBjb21waWxlQXNQdXJlR2V0QnlJ
ZCA/IEFjY2Vzc1R5cGU6OlB1cmVHZXQgOiBBY2Nlc3NUeXBlOjpHZXQ7CisgICAgICAgICAgICAg
ICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVkaWN0
aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBlLCBPUENPREVf
TEVOR1RIKG9wX2dldF9ieV92YWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1Y3Rp
b25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBOb2Rl
KiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3Jk
KCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAgICAg
ICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBHZXRCeVZhbCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYgaXQg
Y2xvYmJlcnMgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSBpdCBnZW5lcmlj
LgpAQCAtNDM0Nyw3ICs0MzU5LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1f
c3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29kZU9y
aWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gb3BfdHJ5X2dldF9i
eV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6OkdldFB1cmUgOiBBY2Nlc3NUeXBlOjpHZXQ7
CisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAob3Bjb2RlSUQg
PT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6
OlRyeUdldDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJlbnRK
SVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2Nr
KTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3VycmVudENvZGVP
cmlnaW4oKS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJbmZv
KiBpbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVPcmlnaW4oYnl0
ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8tPmV2ZXJDb25z
aWRlcmVkICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAgdHlw
ZSA9IEFjY2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAgfQogCiAgICAg
ICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90cnlfZ2V0X2J5
X2lkID8gT1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X2J5X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVy
aXplLmgJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDM5IEBAIHZvaWQgY2xv
YmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhlYXBMb2NhdGlv
bihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7
CisgICAgICAgIC8vIFdlIG1vZGVsIHdoYXQgaXMgYWxsb3dlZCBpbnNpZGUgYSBnZXRPd25Qcm9w
ZXJ0eVNsb3QuCisgICAgICAgIC8vIFNvbWUgZ2V0T3duUHJvcGVydHlTbG90IGltcGxlbWVudGF0
aW9ucyB3aWxsIGxhemlseSBpbmplY3QgcHJvcGVydGllcywgd2hpY2gKKyAgICAgICAgLy8gbWF5
IGNoYW5nZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlLgorCisgICAgICAgIHJlYWQoSlNDZWxsX3N0
cnVjdHVyZUlEKTsKKyAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7CisgICAgICAg
IHJlYWQoSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX2luZGV4aW5n
VHlwZSk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKKyAgICAgICAgcmVhZChN
aXNjRmllbGRzKTsKKworICAgICAgICBBYnN0cmFjdEhlYXAgcHJvcGVydHlOYW1lSGVhcChOYW1l
ZFByb3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAgIHJlYWQocHJv
cGVydHlOYW1lSGVhcCk7CisKKyAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAg
ICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOworICAgICAgICB3cml0ZShKU0NlbGxf
dHlwZUluZm9UeXBlKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX2luZGV4aW5nVHlwZSk7CisKKyAg
ICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUoTWlzY0ZpZWxkcyk7
CisKKyAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIGxhemlseSBhZGRpbmcgZmllbGRzIHRv
IGFuIG9iamVjdCBoYXBwZW5zIGluIGdldE93blByb3BlcnR5U2xvdAorICAgICAgICAvLyBhbmQg
d2UgbmVlZCB0byBhbGxvY2F0ZSBvdXQgb2YgbGluZSBzdG9yYWdlLgorICAgICAgICB3cml0ZShK
U09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICB3cml0ZShCdXR0ZXJmbHlfcHVibGljTGVuZ3Ro
KTsKKyAgICAgICAgd3JpdGUoQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CisKKyAgICAgICAgZGVm
KEhlYXBMb2NhdGlvbihOYW1lZFByb3BlcnR5TG9jLCBwcm9wZXJ0eU5hbWVIZWFwLCBub2RlLT5j
aGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRX
aXRoVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xk
aW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDQ4LDYgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAg
ICAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7
CiAgICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKQEAgLTQ1
OSw2ICs0NjAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhl
Y3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBn
ZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRy
dWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGlu
Z3MgdG8gdGhpcy4KIAorICAgICAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlQWNjZXNzSW5s
aW5pbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBp
ZiAoYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1fc3RydWN0dXJl
LmlzQ2xvYmJlcmVkKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTE0LDYgKzUxOCw5IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8v
IFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgog
ICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhl
IGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCisgICAgICAg
ICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1Y3R1
cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKSkKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw2
ICsyNjUsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBSZXNvbHZlU2NvcGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2UgUHVyZUdl
dEJ5SWQ6IC8vIFdlIGFyZSBtb2RlbGluZyBnZXRPd25Qcm9wZXJ0eVNsb3QgaGVyZSwgd2hpY2gg
bWF5IEdDIGJlY2F1c2UgaXQgaXMgYWxsb3dlZCB0byBhbGxvY2F0ZSB0aGluZ3MuCiAgICAgY2Fz
ZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAg
IGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY3
LDYgKzExNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAor
ICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAg
IGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDcg
KzUyNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5T2Zmc2V0KFN0
b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0g
ICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwg
bV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJ
ZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlkIHx8IG1fb3Ag
PT0gTXVsdGlHZXRCeU9mZnNldCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAg
IGNoaWxkcmVuLnNldENoaWxkMShzdG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQy
KGJhc2UpOwpAQCAtNTM1LDcgKzUzNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZl
cnRUb011bHRpR2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewot
ICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoKTsK
KyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8
fCBtX29wID09IFB1cmVHZXRCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAg
ICBjaGlsZDEoKS5zZXRVc2VLaW5kKENlbGxVc2UpOwogICAgICAgICBtX29wID0gTXVsdGlHZXRC
eU9mZnNldDsKQEAgLTkxMSw2ICs5MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3Ao
KSkgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CkBAIC0xNDIx
LDYgKzE0MjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgogICAgICAgICBj
YXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CisgICAgICAgIGNh
c2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRC
eUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUs
NiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1
dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQ
dXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBt
YWNybyhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXJlR2V0QnlJZCwg
Tm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gs
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkV2l0
aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjgyLDYgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICAg
ICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6
CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAg
ICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlz
aW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRl
KEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIERl
bGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgog
ICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICBjYXNlIEdl
dEJ5VmFsV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMCw2ICsyMTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRC
eUlkKAogICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBnZXRCeUlkRnVuY3Rpb247CiAgICAgaWYg
KHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVy
YXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpQ
dXJlR2V0KQorICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1p
emU7CiAgICAgZWxzZQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25UcnlHZXRC
eUlkT3B0aW1pemU7CiAKQEAgLTQyNjksNiArNDI3MSw0NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2Ug
UHVyZUdldEJ5SWQ6IHsKKyAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkp
IHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9h
ZCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlJlZyBi
YXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSBy
ZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJl
c3VsdFBheWxvYWQuZ3ByKCk7CisKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAo
KSwgTmVlZFRvU3BpbGwsIEFjY2Vzc29yVHlwZTo6UHVyZUdldCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBu
b2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBj
YXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlz
KTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMsIFJldXNlLCBi
YXNlLCBUYWdXb3JkKTsKKyAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgYmFzZVRhZ0dQUiA9
IGJhc2UudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRHUFIgPSBiYXNl
LnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRU
YWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBh
eWxvYWQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpOworICAgICAg
ICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFsaWRHUFJSZWcs
IGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+aWRlbnRpZmll
ck51bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzb3JUeXBlOjpQdXJlR2V0KTsK
KworICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0K
KwogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9
IGJhc2UuanNWYWx1ZVJlZ3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTc5LDggKzE3OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlk
KENvZGVPCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQpOwogICAgIHNs
b3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAKKyAgICBhdXRvIHNsb3dQ
YXRoRnVuY3Rpb24gPSB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlvbkdldEJ5SWRP
cHRpbWl6ZSA6CisgICAgICAgIHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCA/IG9wZXJhdGlv
blB1cmVHZXRCeUlkT3B0aW1pemUgOiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisKICAg
ICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2FzZXMsIHRoaXMs
IHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplIDogb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLAorICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIHNsb3dQ
YXRoRnVuY3Rpb24sCiAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tSZXF1aXJlbWVu
dDo6Q2hlY2tOZWVkZWQsCiAgICAgICAgIHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZvKCksIGJhc2VH
UFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIApAQCAtNDIzNSw2ICs0
MjM4LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXJlR2V0QnlJZDogeworICAgICAgICBzd2l0
Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIENlbGxVc2U6IHsK
KyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKworICAgICAgICAg
ICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdl
dCk7CisKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVzZTogeworICAg
ICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsKKyAgICAgICAg
CisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAgICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJl
Z3MoYmFzZUdQUikpOworICAgICAgICAKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1i
ZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQpOworICAgICAg
ICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAg
IH0KKwogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGlj
dGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFk
ZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDIwNzYyMikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgYmFzZS51c2UoKTsKIAotICAgICAgICBjYWNoZWRH
ZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUt
PmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFj
Y2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5z
ZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwg
SklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlRyeUdldCk7CiAK
ICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9ybWF0SlMsIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAtMTAyMCw3ICsx
MDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQoTgogCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBi
YXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBE
b250U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZp
ZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogCiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VD
aGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDIwNzYy
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBAIGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2Fu
Q29tcGlsZShOb2RlKiAKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAgICAgY2FzZSBUcnlH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNh
c2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9U
aGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAkocmV2aXNpb24gMjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MjMsNyArNjIzLDEwIEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3RydWN0dXJlKCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgotICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQo
QWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NU
eXBlOjpUcnlHZXQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUHVyZUdldEJ5
SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpQdXJlR2V0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnlJZEZsdXNoOgpAQCAtMjc4OCw3ICsyNzkxLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lk
IGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGUgdHlwZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0
eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCB0eXBlID09IEFjY2Vzc1R5cGU6OkdldFB1cmUpOwor
ICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpUcnlHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0KTsKICAgICAgICAgc3dp
dGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgewogICAgICAgICBjYXNlIENlbGxVc2U6
IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQx
KCkpLCB0eXBlKSk7CkBAIC0yODE1LDYgKzI4MTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAg
Sl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5jdGlvbjsKICAgICAgICAgICAgIGlmICh0eXBl
ID09IEFjY2Vzc1R5cGU6OkdldCkKICAgICAgICAgICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBv
cGVyYXRpb25HZXRCeUlkR2VuZXJpYzsKKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQWNj
ZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVy
YXRpb25QdXJlR2V0QnlJZEdlbmVyaWM7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAg
ICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWM7CiAKQEAgLTg4
MzgsNiArODg0Myw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAgICAgICBKX0pJVE9w
ZXJhdGlvbl9FU3NpSkkgb3B0aW1pemF0aW9uRnVuY3Rpb247CiAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVH
ZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBv
cGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYg
KzY5LDI0IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBwdXJlR2V0QnlJZENvbW1vbihWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCwgY29uc3Qgc3RkOjpmdW5j
dGlvbjx2b2lkIChjb25zdCBQcm9wZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJik+JiBmdW5j
dGlvbiA9IFtdIChjb25zdCBQcm9wZXJ0eVNsb3QmLCBjb25zdCBJZGVudGlmaWVyJikgeyB9KQor
eworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlkKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0
UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90LCBbJl0gKGJvb2wsIFByb3BlcnR5U2xvdCYp
IC0+IEpTVmFsdWUgeworICAgICAgICBib29sIHdpbGxEb1NpZGVFZmZlY3RzID0gIShzbG90Lmlz
VmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgfHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVj
dCgpOworICAgICAgICBpZiAoVU5MSUtFTFkod2lsbERvU2lkZUVmZmVjdHMpKSB7CisgICAgICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+amV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uRHVlVG9Q
dXJlR2V0QnlJZEVmZmVjdHMpOworICAgICAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhl
YywgdWlkKTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uKHNsb3QsIGlkZW50KTsKKyAg
ICAgICAgcmV0dXJuIHNsb3QuaXNWYWx1ZSgpID8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkg
OiBqc1VuZGVmaW5lZCgpOworICAgIH0pKTsKK30KKwogZXh0ZXJuICJDIiB7CiAKICNpZiBDT01Q
SUxFUihNU1ZDKQpAQCAtMTY0LDYgKzE4MiwzOCBAQCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uQ29uc3RydWN0CiAgICAgcmV0dXJuIG1pc3NpbmdBcmdDb3VudDsKIH0KIAorRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWMoRXhlY1N0
YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQor
eworICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0
cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0dXJuIHB1cmVHZXRCeUlkQ29tbW9uKCp2bSwgZXhl
YywgYmFzZSwgdWlkKTsKK30KKworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25QdXJlR2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5m
bywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBW
TSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBleGVjKTsKKworICAgIHN0dWJJbmZvLT50b29rU2xvd1BhdGggPSB0cnVlOworCisgICAgcmV0
dXJuIHB1cmVHZXRCeUlkQ29tbW9uKCp2bSwgZXhlYywgYmFzZSwgdWlkKTsKK30KKworRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQoreworICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OworICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGV4ZWMpOworCisgICAgcmV0
dXJuIHB1cmVHZXRCeUlkQ29tbW9uKCp2bSwgZXhlYywgYmFzZSwgdWlkLCAKKyAgICAgICAgWyZd
IChjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIGNvbnN0IElkZW50aWZpZXImIGlkZW50KSB7Cisg
ICAgICAgICAgICBBU1NFUlQoKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSAmJiAh
c2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpKTsKKyAgICAgICAgICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGJhc2UpOworICAgICAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKKyAgICAgICAg
ICAgICAgICByZXBhdGNoR2V0QnlJRChleGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1
YkluZm8sIEdldEJ5SURLaW5kOjpQdXJlKTsKKyAgICAgICAgfSk7Cit9CisKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqIGV4ZWMsIFN0
cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0
cmluZ0ltcGwqIHVpZCkKIHsKICAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKQEAgLTE3OCw3ICsy
MjgsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQoKSk7CiB9CiAKLQogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7
CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CkBAIC0yMDMsNyArMjUyLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcgogCiAgICAgYmFzZVZhbHVlLmdldFByb3Bl
cnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7CiAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNh
Y2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSAmJiAhc2xvdC5pc1RhaW50ZWRCeU9w
YXF1ZU9iamVjdCgpICYmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSB8fCBzbG90LmlzQ2FjaGVh
YmxlR2V0dGVyKCkgfHwgc2xvdC5pc1Vuc2V0KCkpKQotICAgICAgICByZXBhdGNoR2V0QnlJRChl
eGVjLCBiYXNlVmFsdWUsIGlkZW50LCBzbG90LCAqc3R1YkluZm8sIEdldEJ5SURLaW5kOjpQdXJl
KTsKKyAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwg
KnN0dWJJbmZvLCBHZXRCeUlES2luZDo6VHJ5KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwogfQpAQCAtMjIyLDcgKzI3MSwxMCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgSWRlbnRpZmllciBpZGVudCA9
IElkZW50aWZpZXI6OmZyb21VaWQodm0sIHVpZCk7CiAgICAgCiAgICAgTE9HX0lDKChJQ0V2ZW50
OjpPcGVyYXRpb25HZXRCeUlkLCBiYXNlVmFsdWUuY2xhc3NJbmZvT3JOdWxsKCksIGlkZW50KSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBz
bG90KSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBz
bG90KTsKKyAgICBib29sIHdpbGxEb1NpZGVFZmZlY3RzID0gIShzbG90LmlzVmFsdWUoKSB8fCBz
bG90LmlzVW5zZXQoKSkgfHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOworICAgIHN0
dWJJbmZvLT5kaWRTaWRlRWZmZWN0cyB8PSB3aWxsRG9TaWRlRWZmZWN0czsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1
ZSBiYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMjUxLDYgKzMwMyw5IEBAIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2UKICAgICBMT0dfSUMoKElDRXZlbnQ6
Ok9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVsbCgpLCBp
ZGVudCkpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShiYXNlVmFsdWUuZ2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBbJl0gKGJvb2wgZm91bmQsIFByb3BlcnR5U2xvdCYgc2xvdCkg
LT4gSlNWYWx1ZSB7CisgICAgICAgIGJvb2wgd2lsbERvU2lkZUVmZmVjdHMgPSAhKHNsb3QuaXNW
YWx1ZSgpIHx8IHNsb3QuaXNVbnNldCgpKSB8fCBzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0
KCk7CisgICAgICAgIHN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0cyB8PSB3aWxsRG9TaWRlRWZmZWN0
czsKKwogICAgICAgICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3Ry
dWN0dXJlT3JOdWxsKCkpKQogICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZh
bHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6Tm9ybWFsKTsKICAgICAg
ICAgcmV0dXJuIGZvdW5kID8gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCkgOiBqc1VuZGVmaW5l
ZCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzAsNiArMzMwLDkgQEAgaW50MzJfdCBKSVRfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25UcnlHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVy
ZUdldEJ5SWQoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwg
VW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BF
UkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3Ry
dWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWQo
RXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0
cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVk
U3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwg
RW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzMzJf
NjQuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDcg
QEAgdm9pZCBKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZChJbnN0cnVjdAogCiAgICAgSklUR2V0
QnlJZEdlbmVyYXRvciBnZW4oCiAgICAgICAgIG1fY29kZUJsb2NrLCBDb2RlT3JpZ2luKG1fYnl0
ZWNvZGVPZmZzZXQpLCBDYWxsU2l0ZUluZGV4KGN1cnJlbnRJbnN0cnVjdGlvbiksIFJlZ2lzdGVy
U2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgaWRlbnQtPmltcGwoKSwg
SlNWYWx1ZVJlZ3M6OnBheWxvYWRPbmx5KHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVnVDEsIHJlZ1Qw
KSwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVS
ZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEFjY2Vz
c1R5cGU6OlRyeUdldCk7CiAgICAgZ2VuLmdlbmVyYXRlRmFzdFBhdGgoKnRoaXMpOwogICAgIGFk
ZFNsb3dDYXNlKGdlbi5zbG93UGF0aEp1bXAoKSk7CiAgICAgbV9nZXRCeUlkcy5hcHBlbmQoZ2Vu
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCShyZXZpc2lvbiAyMDc2MjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTc5LDcgKzU3OSw3IEBAIHZv
aWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIEpJVEdldEJ5SWRH
ZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2Rl
T2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChtX2J5dGVjb2RlT2Zmc2V0KSwgUmVnaXN0ZXJTZXQ6OnN0
dWJVbmF2YWlsYWJsZVJlZ2lzdGVycygpLAotICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVl
UmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7Cisg
ICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgSlNWYWx1ZVJlZ3MocmVn
VDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0aGlz
KTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJZHMu
YXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJKHJl
dmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNCwxNiArMTM0LDMwIEBAIHN0YXRpYyBib29sIGZvcmNlSUNG
YWlsdXJlKEV4ZWNTdGF0ZSopCiAKIGlubGluZSBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgYXBwcm9w
cmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKEdldEJ5SURLaW5kIGtpbmQpCiB7Ci0gICAg
aWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6Ok5vcm1hbCkKKyAgICBzd2l0Y2ggKGtpbmQpIHsKKyAg
ICBjYXNlIEdldEJ5SURLaW5kOjpOb3JtYWw6CiAgICAgICAgIHJldHVybiBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKyAg
ICBjYXNlIEdldEJ5SURLaW5kOjpUcnk6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRC
eUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6UHVyZToKKyAgICAgICAgcmV0dXJu
IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogfQogCiBpbmxpbmUgSl9KSVRPcGVyYXRpb25fRVNz
aUpJIGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBraW5kKQog
ewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpOb3JtYWwpCisgICAgc3dpdGNoIChraW5k
KSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFsOgogICAgICAgICByZXR1cm4gb3BlcmF0
aW9uR2V0QnlJZDsKLSAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZDsKKyAgICBjYXNlIEdl
dEJ5SURLaW5kOjpUcnk6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlkOworICAg
IGNhc2UgR2V0QnlJREtpbmQ6OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0
QnlJZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbywg
R2V0QnlJREtpbmQga2luZCkKQEAgLTI3MSw2ICsyODUsMTYgQEAgc3RhdGljIElubGluZUNhY2hl
QWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNl
OjpMb2FkOwogICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC5pc1Vuc2V0KCkpCiAgICAgICAgICAg
ICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6Ok1pc3M7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgbmV3
Q2FzZSA9IEFjY2Vzc0Nhc2U6OnRyeUdldCh2bSwgY29kZUJsb2NrLCB0eXBlLCBvZmZzZXQsIHN0
cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBsb2FkVGFyZ2V0RnJvbVByb3h5LCBzbG90LndhdGNocG9p
bnRTZXQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6VHJ5KSB7
CisgICAgICAgICAgICBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBp
ZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vz
c0Nhc2U6OkxvYWQ7CisgICAgICAgICAgICBlbHNlIGlmIChzbG90LmlzVW5zZXQoKSkKKyAgICAg
ICAgICAgICAgICB0eXBlID0gQWNjZXNzQ2FzZTo6TWlzczsKICAgICAgICAgICAgIGVsc2UgaWYg
KHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkKICAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNz
Q2FzZTo6R2V0R2V0dGVyOwogICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDIwNzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SURLaW5kIHsKICAgICBOb3JtYWwsCisgICAgVHJ5
R2V0LAogICAgIFB1cmUKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAJKHJldmlzaW9uIDIw
NzYyMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29u
UmVhc29uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOSBAQCB2b2lkIHByaW50SW50
ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSmV0CiAgICAgY2FzZSBKZXR0aXNvbkR1ZVRvT1NSRXhp
dDoKICAgICAgICAgb3V0LnByaW50KCJPU1JFeGl0Iik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEpldHRpc29uRHVlVG9QdXJlR2V0QnlJZEVmZmVjdHM6CisgICAgICAgIG91dC5wcmludCgi
UHVyZUdldEJ5SWRFZmZlY3RzIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEpldHRpc29u
RHVlVG9Qcm9maWxlZFdhdGNocG9pbnQ6CiAgICAgICAgIG91dC5wcmludCgiUHJvZmlsZWRXYXRj
aHBvaW50Iik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uaAkocmV2aXNpb24g
MjA3NjIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlz
b25SZWFzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBlbnVtIEpldHRpc29u
UmVhc29uIHsKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRpb25Ucmln
Z2VyLAogICAgIEpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRyaWdnZXJP
bk9TUkVudHJ5RmFpbCwKICAgICBKZXR0aXNvbkR1ZVRvT1NSRXhpdCwKKyAgICBKZXR0aXNvbkR1
ZVRvUHVyZUdldEJ5SWRFZmZlY3RzLAogICAgIEpldHRpc29uRHVlVG9Qcm9maWxlZFdhdGNocG9p
bnQsCiAgICAgSmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50LAogICAgIEpldHRpc29u
RHVlVG9PbGRBZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292454</attachid>
            <date>2016-10-21 20:52:00 -0700</date>
            <delta_ts>2016-10-21 22:49:07 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>42490</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDc3MDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLTIuanM6IEFkZGVkLgorICAgICAgICAoZm9v
KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisK
IDIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkIG5lZWRzIHRvIHBhc3MgaW4gTmVlZHNU
b1NwaWxsIGFsb25nIGJvdGggdGhlIGNlbGwgc3BlY3VsYXRpb24gYW5kIHVudHlwZWQgc3BlY3Vs
YXRpb24gcGF0aApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cHVyZS1nZXQtYnktaWQtY3NlLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
ZnVuY3Rpb24gZm9vKG8sIGMpIHsKKyAgICBpZiAoby5mKSB7CisgICAgICAgIGxldCBzdW0gPSAw
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGM7IGkrKykKKyAgICAgICAgICAgIHN1bSAr
PSBvLmY7CisgICAgICAgIHJldHVybiBzdW07CisgICAgfQorfQorbm9JbmxpbmUoZm9vKTsKKwor
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKK2xldCBvYmplY3RzID0gW107Citjb25zdCBvYmplY3RD
b3VudCA9IDIwOworZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgaSsrKSB7CisgICAg
bGV0IG9iaiA9IHt9OworICAgIGZvciAobGV0IGogPSAwOyBqIDwgaSAqIDI7IGorKykgeworICAg
ICAgICBvYmpbImoiICsgal0gPSBqOworICAgIH0KKyAgICBvYmouZiA9IDIwOworICAgIG9iamVj
dHMucHVzaChvYmopOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewor
ICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaiwg
MTUwKTsKK30KKworY29uc3QgdmVyYm9zZSA9IGZhbHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJp
bnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1
cmUtZ2V0LWJ5LWlkLWNzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9wdXJlLWdldC1ieS1pZC1jc2UuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjYgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8u
ZiArIG8uZiArIG8uZiArIG8uZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBE
YXRlLm5vdygpOworbGV0IG9iamVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citm
b3IgKGxldCBpID0gMDsgaSA8IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIg
KyBqXSA9IGo7CisgICAgfQorICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmog
PSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1vbi1ub24tb2JqZWN0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1v
YmplY3QuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQt
b24tbm9uLW9iamVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
YXNzZXJ0aW9uLiIpCit9CisKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgYXNzZXJ0KG8ubGVuZ3Ro
ID09PSBvLmxlbmd0aCk7CisgICAgcmV0dXJuIG8ubGVuZ3RoOworfQorbm9JbmxpbmUoZm9vKTsK
KworbGV0IGl0ZW1zID0gW107Citjb25zdCBudW1JdGVtcyA9IDMwOworZm9yIChsZXQgaSA9IDA7
IGkgPCBudW1JdGVtczsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IGk7IGorKykgeworICAgICAgICBvW2ogKyAiaiJdID0gajsKKyAgICB9CisgICAgby5s
ZW5ndGggPSAyOworICAgIGl0ZW1zLnB1c2gobyk7Cit9IAorCitpdGVtcy5wdXNoKCJzdCIpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgYXNzZXJ0KGZvbyhpdGVtc1tp
ICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOworCitOdW1iZXIucHJvdG90eXBlLmxlbmd0aCA9IDI7
CitpdGVtcy5wdXNoKDQyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykKKyAg
ICBhc3NlcnQoZm9vKGl0ZW1zW2kgJSBpdGVtcy5sZW5ndGhdKSA9PT0gMik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MyBAQAorMjAxNi0xMC0y
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBXZSBzaG91bGQg
aGF2ZSBhIHdheSBvZiBwcm9maWxpbmcgd2hlbiBhIGdldF9ieV9pZCBpcyBwdXJlIGFuZCB0byBl
bWl0IGEgUHVyZUdldEJ5SWQgaW4gdGhlIERGRy9GVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBHZXRCeUlkIG5vZGUg
aW4gdGhlIERGRyBjYWxsZWQgUHVyZUdldEJ5SWQuIFdlIGVtaXQgYQorICAgICAgICBQdXJlR2V0
QnlJZCB3aGVuIHdlIHByb2ZpbGUgdGhhdCBhIGdldF9ieV9pZCBpbiB0aGUgYmFzZWxpbmUgbmV2
ZXIgZG9lcworICAgICAgICBzaWRlIGVmZmVjdHMuIFB1cmVHZXRCeUlkIHNwZWN1bGF0ZXMgb24g
dGhlIGZhY3QgdGhhdCBpdCB3b24ndCBkbyBzaWRlCisgICAgICAgIGVmZmVjdHMuIElmIGl0IHJl
YWxpemVzIHRoYXQgaXQgbXVzdCBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaXQgd2lsbCBwZXJmb3Jt
CisgICAgICAgIHRoZSBzaWRlIGVmZmVjdCwgYnV0IGFsc28gaW52YWxpZGF0ZSB0aGUgQ29kZUJs
b2NrIHRoYXQgY29tcGlsZWQgaXQsCisgICAgICAgIHdoaWNoIHdpbGwgY2F1c2UgdXMgdG8gZXhp
dCBvbmNlIHdlIHJldHVybiBiYWNrIHRvIHRoZSBjb21waWxlZCBjb2RlLgorICAgICAgICBUaGlz
IGFsbG93cyB1cyB0byBoYXZlIHN0cmljdGVyIGNsb2JiZXJpemUgcnVsZXMgZm9yIFB1cmVHZXRC
eUlkIHdoaWNoCisgICAgICAgIG1vZGVsIGhvdyBnZXRPd25Qcm9wZXJ0eVNsb3QoVk1JbnF1aXJ5
KSBiZWhhdmVzLiBUaGlzIG1lYW5zIHRoYXQgUHVyZUdldEJ5SWRzCisgICAgICAgIGNhbiBiZSBD
U0VkIHdpdGggZWFjaCBvdGhlciwgYW5kIHRoYXQgb3RoZXIgdGhpbmdzIGFyZSBtb3JlIGxpa2Vs
eSB0bworICAgICAgICBiZSBDU0VkIGFyb3VuZCBhIFB1cmVHZXRCeUlkLiBUbyBwcm9maWxlIGlm
IGEgZ2V0X2J5X2lkIGRvZXMgc2lkZQorICAgICAgICBlZmZlY3RzLCBJJ3ZlIGFkZGVkIGFuIGV4
dHJhIGJpdCBpbnRvIFN0cnVjdHVyZVN0dWJJbmZvIHRoYXQgd2Ugd3JpdGUKKyAgICAgICAgdG8g
d2hlbiBwZXJmb3JtaW5nIGEgZ2V0X2J5X2lkIHNsb3cgcGF0aCBjYWxsLiBJZiB3ZSBub3RpY2Ug
dGhhdCB3ZQorICAgICAgICBuZXZlciBkbyBlZmZlY3RzLCBpbnNpZGUgdGhlIEJ5dGVDb2RlUGFy
c2VyLCB3ZSB3aWxsIGVtaXQgYSBQdXJlR2V0QnlJZAorICAgICAgICBpbnN0ZWFkIG9mIGEgR2V0
QnlJZC4KKworICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQmVjb21lR2V0QXJyYXlMZW5ndGgpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZv
bGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05v
ZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9HZXRCeU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlHZXRCeU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpnZXRCeUlkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OnB1cmVHZXRCeUlkQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJp
Y0dldEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckpldHRpc29u
UmVhc29uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oOgorCiAyMDE2LTEwLTIxICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBib3RoIHRoZSBj
ZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBTdHJ1
Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCByZXNldEJ5R0MoZmFs
c2UpCiAgICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29uc2lkZXJlZChmYWxz
ZSkKKyAgICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0yMTYsNyArMjE3LDEw
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFB1cmU6Cisg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXQ6CisgICAgICAgIHJlc2V0R2V0QnlJRChjb2RlQmxv
Y2ssICp0aGlzLCBHZXRCeUlES2luZDo6VHJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpQdXJlR2V0OgogICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhp
cywgR2V0QnlJREtpbmQ6OlB1cmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsOCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzczsKIAogZW51bSBjbGFzcyBBY2Nlc3NU
eXBlIDogaW50OF90IHsKICAgICBHZXQsCi0gICAgR2V0UHVyZSwKKyAgICBUcnlHZXQsCisgICAg
UHVyZUdldCwKICAgICBQdXQsCiAgICAgSW4KIH07CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVzZXRCeUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAg
ICAgYm9vbCBldmVyQ29uc2lkZXJlZCA6IDE7CisgICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7
CiB9OwogCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4o
U3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIx
MTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDog
ewogICAgICAgICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEw
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlk
KQorICAgICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xv
YmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFy
cmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2Fu
QmVjb21lR2V0QXJyYXlMZW5ndGgoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogewotICAgIGlm
IChub2RlLT5vcCgpICE9IEdldEJ5SWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
IHVpZCA9IGdyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAg
ICByZXR1cm4gdWlkID09IGdyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsK
KyAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRCeUlkIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5
SWQpIHsKKyAgICAgICAgYXV0byB1aWQgPSBncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKV07CisgICAgICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGguaW1wbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFy
cmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI5MSwxMCArMzI5MSwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAogICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09
IEFjY2Vzc1R5cGU6OkdldCkKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldDoKICAgICAgICAgZ2V0QnlJZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8g
R2V0QnlJZEZsdXNoIDogR2V0QnlJZDsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWNjZXNzVHlwZTo6VHJ5R2V0OgogICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXJlR2V0OgorICAgICAgICBnZXRC
eUlkID0gUHVyZUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgLy8gU3BlY2lhbCBw
YXRoIGZvciBjdXN0b20gYWNjZXNzb3JzIHNpbmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBo
YXZlIGFueSBtZWFuaW5ncy4KICAgICAvLyBTbywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVu
dCBmcm9tIFNpbXBsZSBvbmUuIEJ1dCB3ZSBoYXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdo
ZW4gd2UgdXNlIERPTUpJVC4KQEAgLTQxODIsNyArNDE5MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAg
ICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5SWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworICAg
ICAgICAgICAgYm9vbCBjb21waWxlQXNQdXJlR2V0QnlJZCA9IGZhbHNlOwogICAgICAgICAgICAg
R2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IDA7CiAgICAgICAgICAgICB7CkBAIC00MTkxLDcgKzQyMDEsOCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUg
SklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQg
dGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFs
SW5mbyAmJiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aCAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBj
b21waWxlZEFzR2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVBc0dl
dEJ5SWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb21waWxlQXNQdXJlR2V0QnlJZCA9
ICFieVZhbEluZm8tPnN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0czsKICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJ
bmZvLT5jYWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCkBA
IC00MjA5LDkgKzQyMjAsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KGNvbXBpbGVkQXNHZXRCeUlkKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0LCBPUENPREVfTEVOR1RIKG9wX2dl
dF9ieV92YWwpKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBpbGVB
c0dldEJ5SWQpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBjb21waWxlQXNQ
dXJlR2V0QnlJZCA/IEFjY2Vzc1R5cGU6OlB1cmVHZXQgOiBBY2Nlc3NUeXBlOjpHZXQ7CisgICAg
ICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBl
LCBPUENPREVfTEVOR1RIKG9wX2dldF9ieV92YWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAg
ICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBHZXRCeVZhbCBtdXN0IGJlIHRyZWF0ZWQg
YXMgaWYgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSBp
dCBnZW5lcmljLgpAQCAtNDM0Nyw3ICs0MzU5LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAgICAgICAgICAgICBjdXJy
ZW50Q29kZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gb3Bf
dHJ5X2dldF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6OkdldFB1cmUgOiBBY2Nlc3NU
eXBlOjpHZXQ7CisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAo
b3Bjb2RlSUQgPT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFj
Y2Vzc1R5cGU6OlRyeUdldDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3Vy
cmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZVN0dWJJbmZvKiBpbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8t
PmV2ZXJDb25zaWRlcmVkICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90
cnlfZ2V0X2J5X2lkID8gT1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9M
RU5HVEgob3BfZ2V0X2J5X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDM5IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExh
enlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOiB7CisgICAgICAgIC8vIFdlIG1vZGVsIHdoYXQgaXMgYWxsb3dlZCBpbnNpZGUgYSBn
ZXRPd25Qcm9wZXJ0eVNsb3QuCisgICAgICAgIC8vIFNvbWUgZ2V0T3duUHJvcGVydHlTbG90IGlt
cGxlbWVudGF0aW9ucyB3aWxsIGxhemlseSBpbmplY3QgcHJvcGVydGllcywgd2hpY2gKKyAgICAg
ICAgLy8gbWF5IGNoYW5nZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlLgorCisgICAgICAgIHJlYWQo
SlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7
CisgICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIHJlYWQoSlNDZWxs
X2luZGV4aW5nVHlwZSk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKKyAgICAg
ICAgcmVhZChNaXNjRmllbGRzKTsKKworICAgICAgICBBYnN0cmFjdEhlYXAgcHJvcGVydHlOYW1l
SGVhcChOYW1lZFByb3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAg
IHJlYWQocHJvcGVydHlOYW1lSGVhcCk7CisKKyAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOworICAgICAgICB3cml0
ZShKU0NlbGxfdHlwZUluZm9UeXBlKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX2luZGV4aW5nVHlw
ZSk7CisKKyAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUoTWlz
Y0ZpZWxkcyk7CisKKyAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIGxhemlseSBhZGRpbmcg
ZmllbGRzIHRvIGFuIG9iamVjdCBoYXBwZW5zIGluIGdldE93blByb3BlcnR5U2xvdAorICAgICAg
ICAvLyBhbmQgd2UgbmVlZCB0byBhbGxvY2F0ZSBvdXQgb2YgbGluZSBzdG9yYWdlLgorICAgICAg
ICB3cml0ZShKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICB3cml0ZShCdXR0ZXJmbHlfcHVi
bGljTGVuZ3RoKTsKKyAgICAgICAgd3JpdGUoQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CisKKyAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFByb3BlcnR5TG9jLCBwcm9wZXJ0eU5hbWVIZWFw
LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNl
IEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQ4LDYgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXJlR2V0
QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEo
KTsKQEAgLTQ1OSw2ICs0NjAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBh
ZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KIAorICAgICAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNl
QWNjZXNzSW5saW5pbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAg
ICAgICAgICBpZiAoYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1f
c3RydWN0dXJlLmlzQ2xvYmJlcmVkKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNw
ZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTE0LDYgKzUxOCw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5C
bG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUg
YmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3Qg
YWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgog
CisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUu
bV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQo
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2NSw2ICsyNjUsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNh
c2UgUHVyZUdldEJ5SWQ6IC8vIFdlIGFyZSBtb2RlbGluZyBnZXRPd25Qcm9wZXJ0eVNsb3QgaGVy
ZSwgd2hpY2ggbWF5IEdDIGJlY2F1c2UgaXQgaXMgYWxsb3dlZCB0byBhbGxvY2F0ZSB0aGluZ3Mu
CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1l
bnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6
CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0
aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDc3MDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTI1LDcgKzUyNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5
T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlk
Rmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlk
IHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7
CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShzdG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4u
c2V0Q2hpbGQyKGJhc2UpOwpAQCAtNTM1LDcgKzUzNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEp
CiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJ
ZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5
SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRh
OwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5kKENlbGxVc2UpOwogICAgICAgICBtX29wID0g
TXVsdGlHZXRCeU9mZnNldDsKQEAgLTkxMSw2ICs5MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3
aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnlJZDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1
c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6
CkBAIC0xNDIxLDYgKzE0MjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgog
ICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6Cisg
ICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA3NzA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3Mp
IFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXJl
R2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRC
eUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhH
ZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgyLDYgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVz
dDoKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2VSZWdFeHA6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIwNzcwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKAogICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBnZXRCeUlkRnVuY3Rpb247
CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAgICAgICBnZXRCeUlkRnVuY3Rp
b24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nl
c3NUeXBlOjpQdXJlR2V0KQorICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7CiAgICAgZWxzZQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemU7CiAKQEAgLTQyNjksNiArNDI3MSw0NyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgUHVyZUdldEJ5SWQ6IHsKKyAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRU
YWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGls
ZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc29yVHlwZTo6UHVyZUdldCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXls
b2FkR1BSLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBjYXNlIFVudHlwZWRVc2U6IHsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJh
c2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dFRhZyh0aGlzKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMs
IFJldXNlLCBiYXNlLCBUYWdXb3JkKTsKKyAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgYmFz
ZVRhZ0dQUiA9IGJhc2UudGFnR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgYmFzZVBheWxvYWRH
UFIgPSBiYXNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRUYWdHUFIg
PSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9
IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisgICAgICAgIAorICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkp
OworICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIEludmFs
aWRHUFJSZWcsIGJhc2VHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZS0+
aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzb3JUeXBlOjpQ
dXJlR2V0KTsKKworICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA3NzA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDggKzE3OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAKKyAgICBh
dXRvIHNsb3dQYXRoRnVuY3Rpb24gPSB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSA6CisgICAgICAgIHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCA/
IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUgOiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emU7CisKICAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplIDogb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLAorICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIHNsb3dQYXRoRnVuY3Rpb24sCiAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCiAgICAgICAgIHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIApAQCAt
NDIzNSw2ICs0MjM4LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXJlR2V0QnlJZDogeworICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIENl
bGxVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKwor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlw
ZTo6UHVyZUdldCk7CisKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVz
ZTogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KyAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAg
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
SlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAgICAgICAKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQp
OworICAgICAgICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9k
ZS0+cHJlZGljdGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgYmFzZS51c2UoKTsKIAotICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRv
U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlRy
eUdldCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9y
bWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQo
TgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5v
dENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBu
b3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6
VHJ5R2V0KTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFG
b3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgog
ICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CisgICAgY2FzZSBQdXJlR2V0
QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoK
ICAgICBjYXNlIFRvVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIzLDcgKzYy
MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0cnVjdHVyZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKLSAgICAgICAgICAgIGNv
bXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICAgICAgY29tcGlsZUdl
dEJ5SWQoQWNjZXNzVHlwZTo6VHJ5R2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFB1cmVHZXRCeUlkOgorICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6
UHVyZUdldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAg
ICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAgLTI3ODgsNyArMjc5MSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlIHR5cGUpCiAgICAgewotICAg
ICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBl
OjpHZXRQdXJlKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8IHR5
cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCk7
CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAg
Y2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQobG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKSwgdHlwZSkpOwpAQCAtMjgxNSw2ICsyODE4LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VKSSBnZXRCeUlkRnVuY3Rpb247CiAgICAgICAg
ICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgICAgICAgICAgZ2V0QnlJ
ZEZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJZEdlbmVyaWM7CisgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1
bmN0aW9uID0gb3BlcmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRHZW5l
cmljOwogCkBAIC04ODM4LDYgKzg4NDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wdGltaXphdGlvbkZ1bmN0aW9uOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nl
c3NUeXBlOjpQdXJlR2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlv
bkZ1bmN0aW9uID0gb3BlcmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25G
dW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSwyNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQUxXQVlTX0lOTElO
RSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHVyZUdldEJ5SWRDb21tb24oVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRp
ZmllciYpPiYgZnVuY3Rpb24gPSBbXSAoY29uc3QgUHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRp
ZmllciYpIHsgfSkKK3sKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCgmdm0sIHVpZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCwgWyZdIChib29sLCBQ
cm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgYm9vbCB3aWxsRG9TaWRlRWZmZWN0
cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNUYWludGVk
QnlPcGFxdWVPYmplY3QoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHdpbGxEb1NpZGVFZmZlY3Rz
KSkgeworICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNl
VmFsdWUuZ2V0KGV4ZWMsIHVpZCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbihzbG90
LCBpZGVudCk7CisgICAgICAgIHJldHVybiBzbG90LmlzVmFsdWUoKSA/IHNsb3QuZ2V0VmFsdWUo
ZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKKyAgICB9KSk7Cit9CisKIGV4dGVybiAiQyIg
ewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE2NCw2ICsxODIsMzggQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRH
ZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENv
bW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRP
cHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCwg
CisgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgeworICAgICAgICAgICAgQVNTRVJUKChzbG90LmlzVmFsdWUoKSB8fCBzbG90Lmlz
VW5zZXQoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICAgICAgICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIH0pOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CkBAIC0xNzgsNyArMjI4LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwog
fQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdl
bmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpAQCAtMjAzLDcgKzI1Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKIAogICAgIGJhc2VW
YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkgJiYgIXNsb3Qu
aXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwg
c2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkKLSAgICAgICAgcmVw
YXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRC
eUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwg
aWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRyeSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTIyMiw3ICsyNzEs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIAogICAgIExP
R19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVs
bCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCk7CisgICAgYm9vbCB3aWxsRG9TaWRlRWZmZWN0cyA9ICEoc2xvdC5p
c1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKTsKKyAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0gd2lsbERvU2lkZUVmZmVjdHM7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTI1MSw2ICsz
MDMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgTE9H
X0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0lu
Zm9Pck51bGwoKSwgaWRlbnQpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBib29sIHdpbGxEb1NpZGVFZmZlY3Rz
ID0gIShzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgfHwgc2xvdC5pc1RhaW50ZWRC
eU9wYXF1ZU9iamVjdCgpOworICAgICAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0gd2ls
bERvU2lkZUVmZmVjdHM7CisKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
YmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlE
KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6Ok5v
cm1hbCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQp
IDoganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYgKzMzMCw5IEBAIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3QK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rp
b24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlk
ZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1w
bCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJ
ZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3
ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKEluc3RydWN0CiAKICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgaWRlbnQtPmlt
cGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6
OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYgKzEzNCwzMCBAQCBzdGF0aWMg
Ym9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxpbmUgSl9KSVRPcGVyYXRpb25f
RVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBr
aW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpOb3JtYWwpCisgICAgc3dpdGNo
IChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFsOgogICAgICAgICByZXR1cm4g
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlk
T3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0QnlJREtpbmQ6OlB1cmU6Cisg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogaW5saW5lIEpfSklU
T3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24oR2V0QnlJ
REtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6Tm9ybWFsKQorICAg
IHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJREtpbmQ6Ok5vcm1hbDoKICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWQ7
CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5
R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgorICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHVyZUdldEJ5SWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIEdldEJ5SURLaW5kIGtpbmQpCkBAIC0yNzEsNiArMjg1LDE2IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICB0eXBl
ID0gQWNjZXNzQ2FzZTo6TG9hZDsKICAgICAgICAgICAgIGVsc2UgaWYgKHNsb3QuaXNVbnNldCgp
KQogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpNaXNzOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAg
ICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjp0cnlHZXQodm0sIGNvZGVCbG9jaywgdHlw
ZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9hZFRhcmdldEZyb21Qcm94eSwg
c2xvdC53YXRjaHBvaW50U2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gR2V0QnlJ
REtpbmQ6OlRyeSkgeworICAgICAgICAgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlOwor
ICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQorICAgICAgICAgICAgICAg
IHR5cGUgPSBBY2Nlc3NDYXNlOjpMb2FkOworICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC5pc1Vu
c2V0KCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6Ok1pc3M7CiAgICAgICAg
ICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCiAgICAgICAgICAgICAgICAg
dHlwZSA9IEFjY2Vzc0Nhc2U6OkdldEdldHRlcjsKICAgICAgICAgICAgIGVsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRCeUlES2luZCB7CiAgICAgTm9y
bWFsLAorICAgIFRyeUdldCwKICAgICBQdXJlCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3Bw
CShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpldAogICAgIGNhc2UgSmV0dGlz
b25EdWVUb09TUkV4aXQ6CiAgICAgICAgIG91dC5wcmludCgiT1NSRXhpdCIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzOgorICAgICAg
ICBvdXQucHJpbnQoIlB1cmVHZXRCeUlkRWZmZWN0cyIpOworICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBKZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50OgogICAgICAgICBvdXQucHJpbnQo
IlByb2ZpbGVkV2F0Y2hwb2ludCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29u
LmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckpldHRpc29uUmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAg
ZW51bSBKZXR0aXNvblJlYXNvbiB7CiAgICAgSmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0
aW1pemF0aW9uVHJpZ2dlciwKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6
YXRpb25UcmlnZ2VyT25PU1JFbnRyeUZhaWwsCiAgICAgSmV0dGlzb25EdWVUb09TUkV4aXQsCisg
ICAgSmV0dGlzb25EdWVUb1B1cmVHZXRCeUlkRWZmZWN0cywKICAgICBKZXR0aXNvbkR1ZVRvUHJv
ZmlsZWRXYXRjaHBvaW50LAogICAgIEpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hwb2ludCwK
ICAgICBKZXR0aXNvbkR1ZVRvT2xkQWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292469</attachid>
            <date>2016-10-21 22:49:07 -0700</date>
            <delta_ts>2016-10-24 11:29:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>42487</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDc3MDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLTIuanM6IEFkZGVkLgorICAgICAgICAoZm9v
KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisK
IDIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkIG5lZWRzIHRvIHBhc3MgaW4gTmVlZHNU
b1NwaWxsIGFsb25nIGJvdGggdGhlIGNlbGwgc3BlY3VsYXRpb24gYW5kIHVudHlwZWQgc3BlY3Vs
YXRpb24gcGF0aApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cHVyZS1nZXQtYnktaWQtY3NlLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
ZnVuY3Rpb24gZm9vKG8sIGMpIHsKKyAgICBpZiAoby5mKSB7CisgICAgICAgIGxldCBzdW0gPSAw
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGM7IGkrKykKKyAgICAgICAgICAgIHN1bSAr
PSBvLmY7CisgICAgICAgIHJldHVybiBzdW07CisgICAgfQorfQorbm9JbmxpbmUoZm9vKTsKKwor
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKK2xldCBvYmplY3RzID0gW107Citjb25zdCBvYmplY3RD
b3VudCA9IDIwOworZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgaSsrKSB7CisgICAg
bGV0IG9iaiA9IHt9OworICAgIGZvciAobGV0IGogPSAwOyBqIDwgaSAqIDI7IGorKykgeworICAg
ICAgICBvYmpbImoiICsgal0gPSBqOworICAgIH0KKyAgICBvYmouZiA9IDIwOworICAgIG9iamVj
dHMucHVzaChvYmopOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewor
ICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaiwg
MTUwKTsKK30KKworY29uc3QgdmVyYm9zZSA9IGZhbHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJp
bnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1
cmUtZ2V0LWJ5LWlkLWNzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9wdXJlLWdldC1ieS1pZC1jc2UuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjYgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8u
ZiArIG8uZiArIG8uZiArIG8uZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBE
YXRlLm5vdygpOworbGV0IG9iamVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citm
b3IgKGxldCBpID0gMDsgaSA8IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIg
KyBqXSA9IGo7CisgICAgfQorICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmog
PSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1vbi1ub24tb2JqZWN0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1v
YmplY3QuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQt
b24tbm9uLW9iamVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACitmdW5jdGlv
biBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJCYWQg
YXNzZXJ0aW9uLiIpCit9CisKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgYXNzZXJ0KG8ubGVuZ3Ro
ID09PSBvLmxlbmd0aCk7CisgICAgcmV0dXJuIG8ubGVuZ3RoOworfQorbm9JbmxpbmUoZm9vKTsK
KworbGV0IGl0ZW1zID0gW107Citjb25zdCBudW1JdGVtcyA9IDMwOworZm9yIChsZXQgaSA9IDA7
IGkgPCBudW1JdGVtczsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAgICBmb3IgKGxldCBqID0g
MDsgaiA8IGk7IGorKykgeworICAgICAgICBvW2ogKyAiaiJdID0gajsKKyAgICB9CisgICAgby5s
ZW5ndGggPSAyOworICAgIGl0ZW1zLnB1c2gobyk7Cit9IAorCitpdGVtcy5wdXNoKCJzdCIpOwor
Citmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgYXNzZXJ0KGZvbyhpdGVtc1tp
ICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOworCitOdW1iZXIucHJvdG90eXBlLmxlbmd0aCA9IDI7
CitpdGVtcy5wdXNoKDQyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDA7IGkrKykKKyAg
ICBhc3NlcnQoZm9vKGl0ZW1zW2kgJSBpdGVtcy5sZW5ndGhdKSA9PT0gMik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw4MyBAQAorMjAxNi0xMC0y
MSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBXZSBzaG91bGQg
aGF2ZSBhIHdheSBvZiBwcm9maWxpbmcgd2hlbiBhIGdldF9ieV9pZCBpcyBwdXJlIGFuZCB0byBl
bWl0IGEgUHVyZUdldEJ5SWQgaW4gdGhlIERGRy9GVEwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MzMwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBHZXRCeUlkIG5vZGUg
aW4gdGhlIERGRyBjYWxsZWQgUHVyZUdldEJ5SWQuIFdlIGVtaXQgYQorICAgICAgICBQdXJlR2V0
QnlJZCB3aGVuIHdlIHByb2ZpbGUgdGhhdCBhIGdldF9ieV9pZCBpbiB0aGUgYmFzZWxpbmUgbmV2
ZXIgZG9lcworICAgICAgICBzaWRlIGVmZmVjdHMuIFB1cmVHZXRCeUlkIHNwZWN1bGF0ZXMgb24g
dGhlIGZhY3QgdGhhdCBpdCB3b24ndCBkbyBzaWRlCisgICAgICAgIGVmZmVjdHMuIElmIGl0IHJl
YWxpemVzIHRoYXQgaXQgbXVzdCBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaXQgd2lsbCBwZXJmb3Jt
CisgICAgICAgIHRoZSBzaWRlIGVmZmVjdCwgYnV0IGFsc28gaW52YWxpZGF0ZSB0aGUgQ29kZUJs
b2NrIHRoYXQgY29tcGlsZWQgaXQsCisgICAgICAgIHdoaWNoIHdpbGwgY2F1c2UgdXMgdG8gZXhp
dCBvbmNlIHdlIHJldHVybiBiYWNrIHRvIHRoZSBjb21waWxlZCBjb2RlLgorICAgICAgICBUaGlz
IGFsbG93cyB1cyB0byBoYXZlIHN0cmljdGVyIGNsb2JiZXJpemUgcnVsZXMgZm9yIFB1cmVHZXRC
eUlkIHdoaWNoCisgICAgICAgIG1vZGVsIGhvdyBnZXRPd25Qcm9wZXJ0eVNsb3QoVk1JbnF1aXJ5
KSBiZWhhdmVzLiBUaGlzIG1lYW5zIHRoYXQgUHVyZUdldEJ5SWRzCisgICAgICAgIGNhbiBiZSBD
U0VkIHdpdGggZWFjaCBvdGhlciwgYW5kIHRoYXQgb3RoZXIgdGhpbmdzIGFyZSBtb3JlIGxpa2Vs
eSB0bworICAgICAgICBiZSBDU0VkIGFyb3VuZCBhIFB1cmVHZXRCeUlkLiBUbyBwcm9maWxlIGlm
IGEgZ2V0X2J5X2lkIGRvZXMgc2lkZQorICAgICAgICBlZmZlY3RzLCBJJ3ZlIGFkZGVkIGFuIGV4
dHJhIGJpdCBpbnRvIFN0cnVjdHVyZVN0dWJJbmZvIHRoYXQgd2Ugd3JpdGUKKyAgICAgICAgdG8g
d2hlbiBwZXJmb3JtaW5nIGEgZ2V0X2J5X2lkIHNsb3cgcGF0aCBjYWxsLiBJZiB3ZSBub3RpY2Ug
dGhhdCB3ZQorICAgICAgICBuZXZlciBkbyBlZmZlY3RzLCBpbnNpZGUgdGhlIEJ5dGVDb2RlUGFy
c2VyLCB3ZSB3aWxsIGVtaXQgYSBQdXJlR2V0QnlJZAorICAgICAgICBpbnN0ZWFkIG9mIGEgR2V0
QnlJZC4KKworICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlU3R1YkluZm86OlN0cnVjdHVyZVN0dWJJbmZvKToKKyAgICAgICAg
KEpTQzo6U3RydWN0dXJlU3R1YkluZm86OnJlc2V0KToKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1
Y3R1cmVTdHViSW5mby5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RT
dGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQmVjb21lR2V0QXJyYXlMZW5ndGgpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRp
bmdQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZv
bGRDb25zdGFudHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR05v
ZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9HZXRCeU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvTXVsdGlHZXRCeU9mZnNldCk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSWRlbnRpZmllcik6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aGFzSGVhcFByZWRpY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpzYWZlVG9FeGVj
dXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZCk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENh
cGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAg
ICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dl
ckRGR1RvQjM6OmNvbXBpbGVOb2RlKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpnZXRCeUlkKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0M6OnB1cmVHZXRCeUlkQ29tbW9uKToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5o
OgorICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHA6CisgICAgICAgIChKU0M6OkpJ
VDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToKKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nl
c3MzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKToK
KyAgICAgICAgKiBqaXQvUmVwYXRjaC5jcHA6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlT3B0
aW1pemluZ0dldEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmFwcHJvcHJpYXRlR2VuZXJp
Y0dldEJ5SWRGdW5jdGlvbik6CisgICAgICAgIChKU0M6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAg
ICAgICogaml0L1JlcGF0Y2guaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckpldHRpc29u
UmVhc29uLmNwcDoKKyAgICAgICAgKFdURjo6cHJpbnRJbnRlcm5hbCk6CisgICAgICAgICogcHJv
ZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oOgorCiAyMDE2LTEwLTIxICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VHJ5R2V0QnlJZCBuZWVkcyB0byBwYXNzIGluIE5lZWRzVG9TcGlsbCBhbG9uZyBib3RoIHRoZSBj
ZWxsIHNwZWN1bGF0aW9uIGFuZCB1bnR5cGVkIHNwZWN1bGF0aW9uIHBhdGgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNw
cAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBTdHJ1
Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCByZXNldEJ5R0MoZmFs
c2UpCiAgICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29uc2lkZXJlZChmYWxz
ZSkKKyAgICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0yMTYsNyArMjE3LDEw
IEBAIHZvaWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoKICAgICB9CiAKICAg
ICBzd2l0Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFB1cmU6Cisg
ICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXQ6CisgICAgICAgIHJlc2V0R2V0QnlJRChjb2RlQmxv
Y2ssICp0aGlzLCBHZXRCeUlES2luZDo6VHJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBB
Y2Nlc3NUeXBlOjpQdXJlR2V0OgogICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhp
cywgR2V0QnlJREtpbmQ6OlB1cmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9T
dHJ1Y3R1cmVTdHViSW5mby5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsOCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzczsKIAogZW51bSBjbGFzcyBBY2Nlc3NU
eXBlIDogaW50OF90IHsKICAgICBHZXQsCi0gICAgR2V0UHVyZSwKKyAgICBUcnlHZXQsCisgICAg
UHVyZUdldCwKICAgICBQdXQsCiAgICAgSW4KIH07CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgcmVzZXRCeUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAg
ICAgYm9vbCBldmVyQ29uc2lkZXJlZCA6IDE7CisgICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7
CiB9OwogCiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4o
U3RydWN0dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
YnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIx
MTksNyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAg
IGZvck5vZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNl
IFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDog
ewogICAgICAgICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEw
IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlk
KQorICAgICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xv
YmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAg
ICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJh
eU1vZGUuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FycmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFy
cmF5TW9kZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2Fu
QmVjb21lR2V0QXJyYXlMZW5ndGgoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogewotICAgIGlm
IChub2RlLT5vcCgpICE9IEdldEJ5SWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRv
IHVpZCA9IGdyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAg
ICByZXR1cm4gdWlkID09IGdyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsK
KyAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRCeUlkIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5
SWQpIHsKKyAgICAgICAgYXV0byB1aWQgPSBncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKV07CisgICAgICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGguaW1wbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFy
cmF5TW9kZSBBcnJheU1vZGU6OnJlZmluZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI5MSwxMCArMzI5MSwxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRC
eUlkKAogICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09
IEFjY2Vzc1R5cGU6OkdldCkKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5
cGU6OkdldDoKICAgICAgICAgZ2V0QnlJZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8g
R2V0QnlJZEZsdXNoIDogR2V0QnlJZDsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQWNjZXNzVHlwZTo6VHJ5R2V0OgogICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXJlR2V0OgorICAgICAgICBnZXRC
eUlkID0gUHVyZUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgLy8gU3BlY2lhbCBw
YXRoIGZvciBjdXN0b20gYWNjZXNzb3JzIHNpbmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBo
YXZlIGFueSBtZWFuaW5ncy4KICAgICAvLyBTbywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVu
dCBmcm9tIFNpbXBsZSBvbmUuIEJ1dCB3ZSBoYXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdo
ZW4gd2UgdXNlIERPTUpJVC4KQEAgLTQxODIsNyArNDE5MSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAg
ICAgICAgTm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5SWQg
PSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworICAg
ICAgICAgICAgYm9vbCBjb21waWxlQXNQdXJlR2V0QnlJZCA9IGZhbHNlOwogICAgICAgICAgICAg
R2V0QnlJZFN0YXR1cyBnZXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IDA7CiAgICAgICAgICAgICB7CkBAIC00MTkxLDcgKzQyMDEsOCBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUg
SklULCBieVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQg
dGltZSwgdGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFs
SW5mbyAmJiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aCAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkSWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBj
b21waWxlZEFzR2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVBc0dl
dEJ5SWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb21waWxlQXNQdXJlR2V0QnlJZCA9
ICFieVZhbEluZm8tPnN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0czsKICAgICAgICAgICAgICAgICAg
ICAgaWRlbnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJ
bmZvLT5jYWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCkBA
IC00MjA5LDkgKzQyMjAsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYg
KGNvbXBpbGVkQXNHZXRCeUlkKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoY3VycmVu
dEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51
bWJlciwgZ2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0LCBPUENPREVfTEVOR1RIKG9wX2dl
dF9ieV92YWwpKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBpbGVB
c0dldEJ5SWQpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBjb21waWxlQXNQ
dXJlR2V0QnlJZCA/IEFjY2Vzc1R5cGU6OlB1cmVHZXQgOiBBY2Nlc3NUeXBlOjpHZXQ7CisgICAg
ICAgICAgICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5k
LCBwcmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBl
LCBPUENPREVfTEVOR1RIKG9wX2dldF9ieV92YWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50
SW5zdHJ1Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAg
ICAgICBOb2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1v
ZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAg
ICAgICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBHZXRCeVZhbCBtdXN0IGJlIHRyZWF0ZWQg
YXMgaWYgaXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSBp
dCBnZW5lcmljLgpAQCAtNDM0Nyw3ICs0MzU5LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAgICAgICAgICAgICBjdXJy
ZW50Q29kZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gb3Bf
dHJ5X2dldF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6OkdldFB1cmUgOiBBY2Nlc3NU
eXBlOjpHZXQ7CisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAo
b3Bjb2RlSUQgPT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFj
Y2Vzc1R5cGU6OlRyeUdldDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENv
bmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+bV9sb2NrKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3Vy
cmVudENvZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZVN0dWJJbmZvKiBpbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVP
cmlnaW4oYnl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8t
PmV2ZXJDb25zaWRlcmVkICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAg
ICAgICAgdHlwZSA9IEFjY2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90
cnlfZ2V0X2J5X2lkID8gT1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9M
RU5HVEgob3BfZ2V0X2J5X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTQsNiArNDk0LDM5IEBA
IHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhl
YXBMb2NhdGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExh
enlOb2RlKG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOiB7CisgICAgICAgIC8vIFdlIG1vZGVsIHdoYXQgaXMgYWxsb3dlZCBpbnNpZGUgYSBn
ZXRPd25Qcm9wZXJ0eVNsb3QuCisgICAgICAgIC8vIFNvbWUgZ2V0T3duUHJvcGVydHlTbG90IGlt
cGxlbWVudGF0aW9ucyB3aWxsIGxhemlseSBpbmplY3QgcHJvcGVydGllcywgd2hpY2gKKyAgICAg
ICAgLy8gbWF5IGNoYW5nZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlLgorCisgICAgICAgIHJlYWQo
SlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7
CisgICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIHJlYWQoSlNDZWxs
X2luZGV4aW5nVHlwZSk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKKyAgICAg
ICAgcmVhZChNaXNjRmllbGRzKTsKKworICAgICAgICBBYnN0cmFjdEhlYXAgcHJvcGVydHlOYW1l
SGVhcChOYW1lZFByb3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAg
IHJlYWQocHJvcGVydHlOYW1lSGVhcCk7CisKKyAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVy
ZUlEKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOworICAgICAgICB3cml0
ZShKU0NlbGxfdHlwZUluZm9UeXBlKTsKKyAgICAgICAgd3JpdGUoSlNDZWxsX2luZGV4aW5nVHlw
ZSk7CisKKyAgICAgICAgd3JpdGUoV2F0Y2hwb2ludF9maXJlKTsKKyAgICAgICAgd3JpdGUoTWlz
Y0ZpZWxkcyk7CisKKyAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIGxhemlseSBhZGRpbmcg
ZmllbGRzIHRvIGFuIG9iamVjdCBoYXBwZW5zIGluIGdldE93blByb3BlcnR5U2xvdAorICAgICAg
ICAvLyBhbmQgd2UgbmVlZCB0byBhbGxvY2F0ZSBvdXQgb2YgbGluZSBzdG9yYWdlLgorICAgICAg
ICB3cml0ZShKU09iamVjdF9idXR0ZXJmbHkpOworICAgICAgICB3cml0ZShCdXR0ZXJmbHlfcHVi
bGljTGVuZ3RoKTsKKyAgICAgICAgd3JpdGUoQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCk7CisKKyAg
ICAgICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFByb3BlcnR5TG9jLCBwcm9wZXJ0eU5hbWVIZWFw
LCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5vZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNl
IEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDQ4LDYgKzQ0OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBQdXJlR2V0
QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgRWRnZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEo
KTsKQEAgLTQ1OSw2ICs0NjAsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1faW50ZXJw
cmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAvLyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBh
ZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4KICAgICAgICAgICAgICAgICBhbHJlYWR5SGFu
ZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRoZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0
byBkbyB0aGluZ3MgdG8gdGhpcy4KIAorICAgICAgICAgICAgICAgIGlmICghT3B0aW9uczo6dXNl
QWNjZXNzSW5saW5pbmcoKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAg
ICAgICAgICBpZiAoYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1f
c3RydWN0dXJlLmlzQ2xvYmJlcmVkKCkKICAgICAgICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNo
aWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IChiYXNlVmFsdWUubV90eXBlICYgflNw
ZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTE0LDYgKzUxOCw5IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5C
bG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBub2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUg
YmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVhZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3Qg
YWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9sZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgog
CisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25zOjp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUu
bV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQo
KSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2NSw2ICsyNjUsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNh
c2UgUHVyZUdldEJ5SWQ6IC8vIFdlIGFyZSBtb2RlbGluZyBnZXRPd25Qcm9wZXJ0eVNsb3QgaGVy
ZSwgd2hpY2ggbWF5IEdDIGJlY2F1c2UgaXQgaXMgYWxsb3dlZCB0byBhbGxvY2F0ZSB0aGluZ3Mu
CiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1l
bnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJndW1lbnRzOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6
CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0
aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAyMDc3MDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpA
QCAtNTI1LDcgKzUyNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5
T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRhLCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkK
ICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlk
Rmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlk
IHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7
CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShzdG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4u
c2V0Q2hpbGQyKGJhc2UpOwpAQCAtNTM1LDcgKzUzNSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2
b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQoTXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEp
CiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJ
ZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5
SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlkKTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRh
OwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5kKENlbGxVc2UpOwogICAgICAgICBtX29wID0g
TXVsdGlHZXRCeU9mZnNldDsKQEAgLTkxMSw2ICs5MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3
aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFRyeUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnlJZDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1
c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6
CkBAIC0xNDIxLDYgKzE0MjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgog
ICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAgICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6Cisg
ICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAg
Y2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMjA3NzA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAg
IG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAg
ICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3Mp
IFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXJl
R2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdl
dEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRC
eUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhH
ZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjgyLDYgKzY4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVz
dDoKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNlOgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxh
Y2VSZWdFeHA6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDcgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAg
ICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBEZWxldGVCeVZhbDoKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDIwNzcwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
YWNoZWRHZXRCeUlkKAogICAgIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBnZXRCeUlkRnVuY3Rpb247
CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAgICAgICBnZXRCeUlkRnVuY3Rp
b24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nl
c3NUeXBlOjpQdXJlR2V0KQorICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRC
eUlkT3B0aW1pemU7CiAgICAgZWxzZQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemU7CiAKQEAgLTQyNjksNiArNDI3MSw0NyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAor
ICAgIGNhc2UgUHVyZUdldEJ5SWQ6IHsKKyAgICAgICAgc3dpdGNoIChub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQ
UlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyByZXN1bHRU
YWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0UGF5bG9h
ZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQo
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCByZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGls
ZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNl
KHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRU
YWcodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzLCBS
ZXVzZSwgYmFzZSwgVGFnV29yZCk7CisgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIGJhc2VU
YWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VQYXlsb2FkR1BS
ID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0g
cmVzdWx0VGFnLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxvYWRHUFIgPSBy
ZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKTsK
KyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFn
R1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2Rl
LT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpQ
dXJlR2V0KTsKKworICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3Vs
dFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJyZWFr
OworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAgIEpTVmFsdWVP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1ZhbHVlUmVncyBi
YXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMjA3NzA0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTc5LDggKzE3OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNo
ZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1BhdGhUYXJnZXQp
OwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAgICAKKyAgICBh
dXRvIHNsb3dQYXRoRnVuY3Rpb24gPSB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/IG9wZXJhdGlv
bkdldEJ5SWRPcHRpbWl6ZSA6CisgICAgICAgIHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCA/
IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUgOiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emU7CisKICAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAgICBzbG93Q2Fz
ZXMsIHRoaXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9wdGlt
aXplIDogb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLAorICAgICAgICBzbG93Q2FzZXMsIHRo
aXMsIHNsb3dQYXRoRnVuY3Rpb24sCiAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0aW9uQ2hlY2tS
ZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCiAgICAgICAgIHJlc3VsdEdQUiwgZ2VuLnN0dWJJbmZv
KCksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwogICAgIApAQCAt
NDIzNSw2ICs0MjM4LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXJlR2V0QnlJZDogeworICAg
ICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIENl
bGxVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9k
ZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKKwor
ICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgY2FjaGVkR2V0QnlJ
ZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRp
Zmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlw
ZTo6UHVyZUdldCk7CisKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVW50eXBlZFVz
ZTogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KyAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CisgICAg
ICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAKKyAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
SlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAgICAgICAKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5
SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5vZGUtPmlkZW50
aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQp
OworICAgICAgICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9k
ZS0+cHJlZGljdGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9u
IDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgYmFzZS51c2UoKTsKIAotICAgICAg
ICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJl
Z3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRv
U3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUt
Pm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlRy
eUdldCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2RlLCBEYXRhRm9y
bWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQo
TgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5v
dENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNl
bWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBu
b3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6
VHJ5R2V0KTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFG
b3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShy
ZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBpbmxpbmUgQ2FwYWJp
bGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBOZXdBcnJheVdpdGhTaXplOgog
ICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CisgICAgY2FzZSBQdXJlR2V0
QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoK
ICAgICBjYXNlIFRvVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjIzLDcgKzYy
MywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0cnVjdHVyZSgpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKLSAgICAgICAgICAgIGNv
bXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICAgICAgY29tcGlsZUdl
dEJ5SWQoQWNjZXNzVHlwZTo6VHJ5R2V0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFB1cmVHZXRCeUlkOgorICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6
UHVyZUdldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAg
ICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAgLTI3ODgsNyArMjc5MSw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlIHR5cGUpCiAgICAgewotICAg
ICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBl
OjpHZXRQdXJlKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0IHx8IHR5
cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCk7
CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKICAgICAgICAg
Y2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQobG93Q2VsbCht
X25vZGUtPmNoaWxkMSgpKSwgdHlwZSkpOwpAQCAtMjgxNSw2ICsyODE4LDggQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VKSSBnZXRCeUlkRnVuY3Rpb247CiAgICAgICAg
ICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgICAgICAgICAgZ2V0QnlJ
ZEZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJZEdlbmVyaWM7CisgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1
bmN0aW9uID0gb3BlcmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljOwogICAgICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRHZW5l
cmljOwogCkBAIC04ODM4LDYgKzg4NDMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAg
ICAgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wdGltaXphdGlvbkZ1bmN0aW9uOwogICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJ
ZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nl
c3NUeXBlOjpQdXJlR2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlv
bkZ1bmN0aW9uID0gb3BlcmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZTsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb25G
dW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw2ICs2OSwyNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQUxXQVlTX0lOTElO
RSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHVyZUdldEJ5SWRDb21tb24oVk0mIHZtLCBFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQsIGNv
bnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRp
ZmllciYpPiYgZnVuY3Rpb24gPSBbXSAoY29uc3QgUHJvcGVydHlTbG90JiwgY29uc3QgSWRlbnRp
ZmllciYpIHsgfSkKK3sKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVVp
ZCgmdm0sIHVpZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoYmFz
ZSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
YmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCwgWyZdIChib29sLCBQ
cm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgYm9vbCB3aWxsRG9TaWRlRWZmZWN0
cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNUYWludGVk
QnlPcGFxdWVPYmplY3QoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHdpbGxEb1NpZGVFZmZlY3Rz
KSkgeworICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpldHRpc29uKFByb2ZpbGVyOjpK
ZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzKTsKKyAgICAgICAgICAgIHJldHVybiBiYXNl
VmFsdWUuZ2V0KGV4ZWMsIHVpZCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbihzbG90
LCBpZGVudCk7CisgICAgICAgIHJldHVybiBzbG90LmlzVmFsdWUoKSA/IHNsb3QuZ2V0VmFsdWUo
ZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKKyAgICB9KSk7Cit9CisKIGV4dGVybiAiQyIg
ewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE2NCw2ICsxODIsMzggQEAgaW50MzJfdCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVybiBtaXNzaW5nQXJnQ291bnQ7
CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRH
ZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxs
RnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENv
bW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHVi
SW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1
aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQYXRoID0gdHJ1
ZTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7
Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWRP
cHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5j
b2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0g
PSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVj
KTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCwg
CisgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkgeworICAgICAgICAgICAgQVNTRVJUKChzbG90LmlzVmFsdWUoKSB8fCBzbG90Lmlz
VW5zZXQoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAgICAgICAgICAg
IGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwo
KSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVu
dCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIH0pOworfQor
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWQoRXhlY1N0
YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJh
c2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7
CkBAIC0xNzgsNyArMjI4LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVzdWx0KCkpOwog
fQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdl
bmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlxdWVkU3RyaW5n
SW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpAQCAtMjAzLDcgKzI1Miw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKIAogICAgIGJhc2VW
YWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIGlmIChzdHViSW5m
by0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkgJiYgIXNsb3Qu
aXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwg
c2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkKLSAgICAgICAgcmVw
YXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRC
eUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwg
aWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRyeSk7CiAKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTIyMiw3ICsyNzEs
MTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQogICAgIElkZW50
aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAgIAogICAgIExP
R19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZhbHVlLmNsYXNzSW5mb09yTnVs
bCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCk7CisgICAgYm9vbCB3aWxsRG9TaWRlRWZmZWN0cyA9ICEoc2xvdC5p
c1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKTsKKyAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0gd2lsbERvU2lkZUVmZmVjdHM7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNvZGVkSlNWYWx1
ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAgLTI1MSw2ICsz
MDMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdlCiAgICAgTE9H
X0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGJhc2VWYWx1ZS5jbGFzc0lu
Zm9Pck51bGwoKSwgaWRlbnQpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5kLCBQcm9wZXJ0
eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBib29sIHdpbGxEb1NpZGVFZmZlY3Rz
ID0gIShzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgfHwgc2xvdC5pc1RhaW50ZWRC
eU9wYXF1ZU9iamVjdCgpOworICAgICAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0gd2ls
bERvU2lkZUVmZmVjdHM7CisKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRlckNhY2hpbmco
YmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAgICAgIHJlcGF0Y2hHZXRCeUlE
KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6Ok5v
cm1hbCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQp
IDoganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3Bl
cmF0aW9ucy5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYgKzMzMCw5IEBAIGludDMy
X3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5m
byosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRFUk5BTDsKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFM
OwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1p
emUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVl
ZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOworRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplKEV4
ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJp
bmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFs
dWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBFbmNvZGVkSlNW
YWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQoSW5zdHJ1Y3QK
IAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVCbG9jaywgQ29k
ZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50SW5zdHJ1Y3Rp
b24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0gICAgICAgIGlk
ZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpTVmFsdWVSZWdz
KHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1w
bCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMSwg
cmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5nZW5lcmF0ZUZhc3RQYXRoKCp0
aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIG1fZ2V0QnlJ
ZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3Bl
cnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3OSw3
ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKEluc3RydWN0CiAKICAg
ICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ssIENvZGVPcmln
aW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9mZnNldCksIFJl
Z2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAgaWRlbnQtPmlt
cGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFjY2Vzc1R5cGU6
OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsKICAgICBnZW4uZ2VuZXJhdGVG
YXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Jl
cGF0Y2guY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYgKzEzNCwzMCBAQCBzdGF0aWMg
Ym9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxpbmUgSl9KSVRPcGVyYXRpb25f
RVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihHZXRCeUlES2luZCBr
aW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpOb3JtYWwpCisgICAgc3dpdGNo
IChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFsOgogICAgICAgICByZXR1cm4g
b3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25UcnlHZXRCeUlk
T3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0QnlJREtpbmQ6OlB1cmU6Cisg
ICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogaW5saW5lIEpfSklU
T3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24oR2V0QnlJ
REtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6Tm9ybWFsKQorICAg
IHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJREtpbmQ6Ok5vcm1hbDoKICAgICAgICAg
cmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblRyeUdldEJ5SWQ7
CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5
R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgorICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uUHVyZUdldEJ5SWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfQogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVHZXRC
eUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8sIEdldEJ5SURLaW5kIGtpbmQpCkBAIC0yNzEsNiArMjg1LDE2IEBAIHN0YXRp
YyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICB0eXBl
ID0gQWNjZXNzQ2FzZTo6TG9hZDsKICAgICAgICAgICAgIGVsc2UgaWYgKHNsb3QuaXNVbnNldCgp
KQogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpNaXNzOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisKKyAg
ICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjp0cnlHZXQodm0sIGNvZGVCbG9jaywgdHlw
ZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9hZFRhcmdldEZyb21Qcm94eSwg
c2xvdC53YXRjaHBvaW50U2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gR2V0QnlJ
REtpbmQ6OlRyeSkgeworICAgICAgICAgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBlOwor
ICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQorICAgICAgICAgICAgICAg
IHR5cGUgPSBBY2Nlc3NDYXNlOjpMb2FkOworICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC5pc1Vu
c2V0KCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6Ok1pc3M7CiAgICAgICAg
ICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCiAgICAgICAgICAgICAgICAg
dHlwZSA9IEFjY2Vzc0Nhc2U6OkdldEdldHRlcjsKICAgICAgICAgICAgIGVsc2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRCeUlES2luZCB7CiAgICAgTm9y
bWFsLAorICAgIFRyeSwKICAgICBQdXJlCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwCShy
ZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJKZXR0aXNvblJlYXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAgdm9p
ZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpldAogICAgIGNhc2UgSmV0dGlzb25E
dWVUb09TUkV4aXQ6CiAgICAgICAgIG91dC5wcmludCgiT1NSRXhpdCIpOwogICAgICAgICByZXR1
cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzOgorICAgICAgICBv
dXQucHJpbnQoIlB1cmVHZXRCeUlkRWZmZWN0cyIpOworICAgICAgICByZXR1cm47CiAgICAgY2Fz
ZSBKZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50OgogICAgICAgICBvdXQucHJpbnQoIlBy
b2ZpbGVkV2F0Y2hwb2ludCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgJ
KHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlckpldHRpc29uUmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgZW51
bSBKZXR0aXNvblJlYXNvbiB7CiAgICAgSmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1p
emF0aW9uVHJpZ2dlciwKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRp
b25UcmlnZ2VyT25PU1JFbnRyeUZhaWwsCiAgICAgSmV0dGlzb25EdWVUb09TUkV4aXQsCisgICAg
SmV0dGlzb25EdWVUb1B1cmVHZXRCeUlkRWZmZWN0cywKICAgICBKZXR0aXNvbkR1ZVRvUHJvZmls
ZWRXYXRjaHBvaW50LAogICAgIEpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hwb2ludCwKICAg
ICBKZXR0aXNvbkR1ZVRvT2xkQWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>292633</attachid>
            <date>2016-10-24 11:29:20 -0700</date>
            <delta_ts>2016-10-29 16:54:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>44719</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDc3MDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDE2LTEwLTIxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNy
b2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLTIuanM6IEFkZGVkLgorICAgICAgICAoZm9v
KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzOiBBZGRl
ZC4KKyAgICAgICAgKGZvbyk6CisgICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisK
IDIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkIG5lZWRzIHRvIHBhc3MgaW4gTmVlZHNU
b1NwaWxsIGFsb25nIGJvdGggdGhlIGNlbGwgc3BlY3VsYXRpb24gYW5kIHVudHlwZWQgc3BlY3Vs
YXRpb24gcGF0aApJbmRleDogSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLTIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLTIuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cHVyZS1nZXQtYnktaWQtY3NlLTIuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMCBAQAor
ZnVuY3Rpb24gZm9vKG8sIGMpIHsKKyAgICBpZiAoby5mKSB7CisgICAgICAgIGxldCBzdW0gPSAw
OworICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGM7IGkrKykKKyAgICAgICAgICAgIHN1bSAr
PSBvLmY7CisgICAgICAgIHJldHVybiBzdW07CisgICAgfQorfQorbm9JbmxpbmUoZm9vKTsKKwor
bGV0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKK2xldCBvYmplY3RzID0gW107Citjb25zdCBvYmplY3RD
b3VudCA9IDIwOworZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RDb3VudDsgaSsrKSB7CisgICAg
bGV0IG9iaiA9IHt9OworICAgIGZvciAobGV0IGogPSAwOyBqIDwgaSAqIDI7IGorKykgeworICAg
ICAgICBvYmpbImoiICsgal0gPSBqOworICAgIH0KKyAgICBvYmouZiA9IDIwOworICAgIG9iamVj
dHMucHVzaChvYmopOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7IGkrKykgewor
ICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaiwg
MTUwKTsKK30KKworY29uc3QgdmVyYm9zZSA9IGZhbHNlOworaWYgKHZlcmJvc2UpCisgICAgcHJp
bnQoRGF0ZS5ub3coKSAtIHN0YXJ0KTsKSW5kZXg6IEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1
cmUtZ2V0LWJ5LWlkLWNzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9wdXJlLWdldC1ieS1pZC1jc2UuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcHVyZS1nZXQtYnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjYgQEAKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8u
ZiArIG8uZiArIG8uZiArIG8uZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBE
YXRlLm5vdygpOworbGV0IG9iamVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citm
b3IgKGxldCBpID0gMDsgaSA8IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307
CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIg
KyBqXSA9IGo7CisgICAgfQorICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7
Cit9CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmog
PSBvYmplY3RzW2kgJSBvYmplY3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29ycmVjdG5l
c3MuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNv
cnJlY3RuZXNzLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5
LWlkLWNzZS1jb3JyZWN0bmVzcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM5IEBACitm
dW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9y
KCJCYWQgYXNzZXJ0aW9uIikKK30KK25vSW5saW5lKGFzc2VydCk7CisKK2Z1bmN0aW9uIGZvbyhv
MSwgbzIpIHsKKyAgICBsZXQgYSA9IG8xLmYxOworICAgIGxldCBiID0gbzIuZjI7CisgICAgcmV0
dXJuIGEgKyBvMS5mMSArIGI7Cit9Citub0lubGluZShmb28pOworCitsZXQgb2JqcyA9IFtdOwor
Y29uc3QgY291bnQgPSA4MDsKK2ZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAg
IGxldCBvID0ge307CisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpOyArK2opIHsKKyAgICAgICAg
b1tqICsgIkoiXSA9IGo7CisgICAgfQorICAgIG8uZjEgPSAyMDsKKyAgICBvLmYyID0gNDA7Cisg
ICAgb2Jqcy5wdXNoKG8pOworfQorCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDA7IGkrKykgewor
ICAgIGxldCBvMSA9IG9ianNbaSAlIG9ianMubGVuZ3RoXTsKKyAgICBsZXQgbzIgPSBvYmpzWyhp
ICsgMSkgJSBvYmpzLmxlbmd0aF07CisgICAgYXNzZXJ0KGZvbyhvMSwgbzIpID09PSA4MCk7Cit9
CisKK2xldCBvID0gb2Jqc1tjb3VudCAtIDFdOworbGV0IG51bUNhbGxzID0gMDsKK09iamVjdC5k
ZWZpbmVQcm9wZXJ0eShvLCAiZjEiLCB7CisgICAgZ2V0KCkgeyArK251bUNhbGxzOyByZXR1cm4g
MjU7IH0KK30pOworCithc3NlcnQoZm9vKG8sIG9ianNbY291bnQgLSAyXSkgPT09IDkwKTsKK2Fz
c2VydChudW1DYWxscyA9PT0gMik7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9wdXJlLWdldC1ieS1p
ZC1vbi1ub24tb2JqZWN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0
LWJ5LWlkLW9uLW5vbi1vYmplY3QuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
cHVyZS1nZXQtYnktaWQtb24tbm9uLW9iamVjdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDMyIEBACitmdW5jdGlvbiBhc3NlcnQoYikgeworICAgIGlmICghYikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJCYWQgYXNzZXJ0aW9uLiIpCit9CisKK2Z1bmN0aW9uIGZvbyhvKSB7CisgICAg
YXNzZXJ0KG8ubGVuZ3RoID09PSBvLmxlbmd0aCk7CisgICAgcmV0dXJuIG8ubGVuZ3RoOworfQor
bm9JbmxpbmUoZm9vKTsKKworbGV0IGl0ZW1zID0gW107Citjb25zdCBudW1JdGVtcyA9IDMwOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCBudW1JdGVtczsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IGk7IGorKykgeworICAgICAgICBvW2ogKyAiaiJdID0gajsK
KyAgICB9CisgICAgby5sZW5ndGggPSAyOworICAgIGl0ZW1zLnB1c2gobyk7Cit9IAorCitpdGVt
cy5wdXNoKCJzdCIpOworCitmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgYXNz
ZXJ0KGZvbyhpdGVtc1tpICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOworCitOdW1iZXIucHJvdG90
eXBlLmxlbmd0aCA9IDI7CitpdGVtcy5wdXNoKDQyKTsKKworZm9yIChsZXQgaSA9IDA7IGkgPCAx
MDAwMDA7IGkrKykKKyAgICBhc3NlcnQoZm9vKGl0ZW1zW2kgJSBpdGVtcy5sZW5ndGhdKSA9PT0g
Mik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MDAgQEAKKzIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAg
ICAgICAgV2Ugc2hvdWxkIGhhdmUgYSB3YXkgb2YgcHJvZmlsaW5nIHdoZW4gYSBnZXRfYnlfaWQg
aXMgcHVyZSBhbmQgdG8gZW1pdCBhIFB1cmVHZXRCeUlkIGluIHRoZSBERkcvRlRMCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMzMDUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNyZWF0ZXMgYSBu
ZXcgR2V0QnlJZCBub2RlIGluIHRoZSBERkcgY2FsbGVkIFB1cmVHZXRCeUlkLiBXZSBlbWl0IGEK
KyAgICAgICAgUHVyZUdldEJ5SWQgd2hlbiB3ZSBwcm9maWxlIHRoYXQgYSBnZXRfYnlfaWQgaW4g
dGhlIGJhc2VsaW5lIG5ldmVyIGRvZXMKKyAgICAgICAgc2lkZSBlZmZlY3RzLiBQdXJlR2V0QnlJ
ZCBzcGVjdWxhdGVzIG9uIHRoZSBmYWN0IHRoYXQgaXQgd29uJ3QgZG8gc2lkZQorICAgICAgICBl
ZmZlY3RzLiBJZiBpdCByZWFsaXplcyB0aGF0IGl0IG11c3QgcGVyZm9ybSBzaWRlIGVmZmVjdHMs
IGl0IHdpbGwgcGVyZm9ybQorICAgICAgICB0aGUgc2lkZSBlZmZlY3QsIGJ1dCBhbHNvIGludmFs
aWRhdGUgdGhlIENvZGVCbG9jayB0aGF0IGNvbXBpbGVkIGl0LAorICAgICAgICB3aGljaCB3aWxs
IGNhdXNlIHVzIHRvIGV4aXQgb25jZSB3ZSByZXR1cm4gYmFjayB0byB0aGUgY29tcGlsZWQgY29k
ZS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdXMgdG8gaGF2ZSBzdHJpY3RlciBjbG9iYmVyaXplIHJ1
bGVzIGZvciBQdXJlR2V0QnlJZCB3aGljaAorICAgICAgICBtb2RlbCBob3cgZ2V0T3duUHJvcGVy
dHlTbG90KFZNSW5xdWlyeSkgYmVoYXZlcy4gVGhpcyBtZWFucyB0aGF0IFB1cmVHZXRCeUlkcwor
ICAgICAgICBjYW4gYmUgQ1NFZCB3aXRoIGVhY2ggb3RoZXIsIGFuZCB0aGF0IG90aGVyIHRoaW5n
cyBhcmUgbW9yZSBsaWtlbHkgdG8KKyAgICAgICAgYmUgQ1NFZCBhcm91bmQgYSBQdXJlR2V0QnlJ
ZC4gVG8gcHJvZmlsZSBpZiBhIGdldF9ieV9pZCBkb2VzIHNpZGUKKyAgICAgICAgZWZmZWN0cywg
SSd2ZSBhZGRlZCBhbiBleHRyYSBiaXQgaW50byBTdHJ1Y3R1cmVTdHViSW5mbyB0aGF0IHdlIHdy
aXRlCisgICAgICAgIHRvIHdoZW4gcGVyZm9ybWluZyBhIGdldF9ieV9pZCBzbG93IHBhdGggY2Fs
bC4gSWYgd2Ugbm90aWNlIHRoYXQgd2UKKyAgICAgICAgbmV2ZXIgZG8gZWZmZWN0cywgaW5zaWRl
IHRoZSBCeXRlQ29kZVBhcnNlciwgd2Ugd2lsbCBlbWl0IGEgUHVyZUdldEJ5SWQKKyAgICAgICAg
aW5zdGVhZCBvZiBhIEdldEJ5SWQuCisKKyAgICAgICAgVG8ganVzdGlmeSB0aGUgcGVyZm9ybWFu
Y2UgYmVuZWZpdCBvZiB0aGlzIHBhdGNoLCBJIHJhbiB0aGUgc3VpdGUgb2YKKyAgICAgICAgYmVu
Y2htYXJrcyB3aXRoIHVzZUFjY2Vzc0lubGluaW5nPWZhbHNlLiBUaGlzIG1lYW50IHRoYXQgd2Ug
ZG9uJ3QgY29tcGlsZQorICAgICAgICBhbnkgKE11bHRpKUdldEJ5T2Zmc2V0LyhNdWx0aSlQdXRC
eU9mZnNldC4gVGhpcyB3YXMganVzdCB0byB0cnkgdG8gc2VlIGlmCisgICAgICAgIHRoaXMgcGF0
Y2ggaXMgd29ydGggYW55dGhpbmcgYXQgYWxsIGluIGEgd29ybGQgd2hlcmUgd2UgZW1pdCBtYW55
CisgICAgICAgIFB1cmVHZXRCeUlkcy4gUnVubmluZyB0aGUgYmVuY2htYXJrcyB1bmRlciB0aGlz
IG1vZGUgc2hvd2VkIGEgMy41JSBvY3RhbmUKKyAgICAgICAgaW1wcm92ZW1lbnQgYW5kIGEgMTUl
IGtyYWtlbiBpbXByb3ZlbWVudC4gSG93ZXZlciwgd2hlbiBydW5uaW5nIGJlbmNobWFya3MKKyAg
ICAgICAgd2l0aCB1c2VBY2Nlc3NJbmxpbmluZz10cnVlICh0aGUgZGVmYXVsdCBKU0Mgc3RhdGUp
LCB0aGlzIHBhdGNoIGlzIG5ldXRyYWwuCisgICAgICAgIEkgdGhpbmsgdGhlIG1haW4gcmVhc29u
IGZvciB0aGlzIGlzIHRoYXQgdGhlIERGRyBpcyBnb29kIGF0IGtub3dpbmcgd2hlbiB0bworICAg
ICAgICBlbWl0IChNdWx0aSlHZXRCeU9mZnNldCwgYW5kIG1vc3QgYmVuY2htYXJrcyB0aGF0IHdv
dWxkIGJlbmVmaXQgZnJvbQorICAgICAgICBQdXJlR2V0QnlJZCBhcmUgYWxyZWFkeSBlbWl0dGlu
ZyAoTXVsdGkpR2V0QnlPZmZzZXQuIEhvd2V2ZXIsIFB1cmVHZXRCeUlkIGNhbiBiZQorICAgICAg
ICBwcm9maXRhYmxlIHdoZW4gd2UgZW5jb3VudGVyIGNvZGUgdGhhdCBpcyB0b28gcG9seW1vcnBo
aWMgZm9yIChNdWx0aSlHZXRCeU9mZnNldC4KKyAgICAgICAgSXQncyByZWFzb25hYmxlIHRvIGV4
cGVjdCB0aGF0IEpTIGNvZGUgaW4gdGhlIHdpbGQgd2lsbCBmYWxsIGludG8gdGhpcyB1c2UKKyAg
ICAgICAgY2FzZSBldmVuIHRob3VnaCBpdCBtaWdodCBub3QgYmUgcmVwcmVzZW50YXRpdmUgaW4g
c29tZSBvZiB0aGUgbWFqb3IgSlMgYmVuY2htYXJrcy4KKyAgICAgICAgSSB3cm90ZSBzb21lIG1p
Y3JvYmVuY2htYXJrcyB0byBkZW1vbnN0cmF0ZSB0aGUgYmVuZWZpdHMgb2YgUHVyZUdldEJ5SWQg
Q1NFLAorICAgICAgICBhbmQgdGhleSB3ZXJlIDMwJSAoZWxpbWluYXRpbmcgYSBmZXcgUHVyZUdl
dEJ5SWQgZnJvbSBhbiBhZGQgZXhwcmVzc2lvbikKKyAgICAgICAgdG8gMTB4IGZhc3RlciAoZWxp
bWluYXRpbmcgYSBQdXJlR2V0QnlJZCBpbiBhIGxvb3ApLgorCisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6
U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6cmVz
ZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmg6CisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5C
ZWNvbWVHZXRBcnJheUxlbmd0aCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCk6Cisg
ICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAq
IGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6Cisg
ICAgICAgICogZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpDb25zdGFudEZvbGRpbmdQaGFzZTo6Zm9sZENvbnN0YW50cyk6CisgICAgICAgICogZGZn
L0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6ZG9lc0dDKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6OmNvbnZlcnRUb0dldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252
ZXJ0VG9NdWx0aUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJZGVu
dGlmaWVyKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNIZWFwUHJlZGljdGlvbik6Cisg
ICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Q
cm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVUcnlHZXRCeUlkKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQpOgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0IzLmNwcDoK
KyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU5vZGUpOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlR2V0QnlJZCk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmdldEJ5SWQpOgorICAgICAgICAqIGpp
dC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6cHVyZUdldEJ5SWRDb21tb24pOgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmg6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5
QWNjZXNzLmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgor
ICAgICAgICAqIGppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
SklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQpOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoK
KyAgICAgICAgKEpTQzo6YXBwcm9wcmlhdGVPcHRpbWl6aW5nR2V0QnlJZEZ1bmN0aW9uKToKKyAg
ICAgICAgKEpTQzo6YXBwcm9wcmlhdGVHZW5lcmljR2V0QnlJZEZ1bmN0aW9uKToKKyAgICAgICAg
KEpTQzo6dHJ5Q2FjaGVHZXRCeUlEKToKKyAgICAgICAgKiBqaXQvUmVwYXRjaC5oOgorICAgICAg
ICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3BwOgorICAgICAgICAoV1RGOjpw
cmludEludGVybmFsKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29u
Lmg6CisKIDIwMTYtMTAtMjEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkIG5lZWRzIHRvIHBhc3MgaW4g
TmVlZHNUb1NwaWxsIGFsb25nIGJvdGggdGhlIGNlbGwgc3BlY3VsYXRpb24gYW5kIHVudHlwZWQg
c3BlY3VsYXRpb24gcGF0aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0
cnVjdHVyZVN0dWJJbmZvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIFN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHVi
SW5mbyhBY2MKICAgICAsIHJlc2V0QnlHQyhmYWxzZSkKICAgICAsIHRvb2tTbG93UGF0aChmYWxz
ZSkKICAgICAsIGV2ZXJDb25zaWRlcmVkKGZhbHNlKQorICAgICwgZGlkU2lkZUVmZmVjdHMoZmFs
c2UpCiB7CiB9CiAKQEAgLTIxNiw3ICsyMTcsMTAgQEAgdm9pZCBTdHJ1Y3R1cmVTdHViSW5mbzo6
cmVzZXQoQ29kZUJsb2NrKgogICAgIH0KIAogICAgIHN3aXRjaCAoYWNjZXNzVHlwZSkgewotICAg
IGNhc2UgQWNjZXNzVHlwZTo6R2V0UHVyZToKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlRyeUdldDoK
KyAgICAgICAgcmVzZXRHZXRCeUlEKGNvZGVCbG9jaywgKnRoaXMsIEdldEJ5SURLaW5kOjpUcnkp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6OlB1cmVHZXQ6CiAgICAgICAg
IHJlc2V0R2V0QnlJRChjb2RlQmxvY2ssICp0aGlzLCBHZXRCeUlES2luZDo6UHVyZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0OgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmgJKHJldmlzaW9u
IDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHVi
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw4IEBAIGNsYXNzIFBvbHltb3JwaGlj
QWNjZXNzOwogCiBlbnVtIGNsYXNzIEFjY2Vzc1R5cGUgOiBpbnQ4X3QgewogICAgIEdldCwKLSAg
ICBHZXRQdXJlLAorICAgIFRyeUdldCwKKyAgICBQdXJlR2V0LAogICAgIFB1dCwKICAgICBJbgog
fTsKQEAgLTIwNSw2ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCByZXNldEJ5R0MgOiAxOwog
ICAgIGJvb2wgdG9va1Nsb3dQYXRoIDogMTsKICAgICBib29sIGV2ZXJDb25zaWRlcmVkIDogMTsK
KyAgICBib29sIGRpZFNpZGVFZmZlY3RzIDogMTsKIH07CiAKIGlubGluZSBDb2RlT3JpZ2luIGdl
dFN0cnVjdHVyZVN0dWJJbmZvQ29kZU9yaWdpbihTdHJ1Y3R1cmVTdHViSW5mbyYgc3RydWN0dXJl
U3R1YkluZm8pCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIxMTksNiArMjExOSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnBy
ZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgp
OwogICAgICAgICBicmVhazsKIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRC
eUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgIGlmICghbm9kZS0+cHJlZGlj
dGlvbigpKSB7CkBAIC0yMTUwLDcgKzIxNTEsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgY2xv
YmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKKyAgICAgICAg
aWYgKG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpCisgICAgICAgICAgICBjbG9iYmVyU3RydWN0
dXJlcyhjbG9iYmVyTGltaXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjbG9iYmVyV29y
bGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2Rl
KG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlzaW9uIDIwNzcwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUyLDEwICsxNTIsMTEgQEAgQXJyYXlNb2RlIEFycmF5TW9kZTo6ZnJvbU9ic2Vy
dmVkKGNvbnN0IAogCiBzdGF0aWMgYm9vbCBjYW5CZWNvbWVHZXRBcnJheUxlbmd0aChHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiB7Ci0gICAgaWYgKG5vZGUtPm9wKCkgIT0gR2V0QnlJZCkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGF1dG8gdWlkID0gZ3JhcGguaWRlbnRpZmllcnMoKVtu
b2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwotICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpOworICAgIGlmIChub2RlLT5vcCgpID09IEdldEJ5
SWQgfHwgbm9kZS0+b3AoKSA9PSBQdXJlR2V0QnlJZCkgeworICAgICAgICBhdXRvIHVpZCA9IGdy
YXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKKyAgICAgICAgcmV0
dXJuIHVpZCA9PSBncmFwaC5tX3ZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aC5pbXBsKCk7CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogQXJyYXlNb2RlIEFycmF5TW9kZTo6cmVmaW5lKApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjkxLDEwICszMjkxLDE5IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgfQogICAgIAogICAgIE5vZGVU
eXBlIGdldEJ5SWQ7Ci0gICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQorICAgIHN3aXRj
aCAodHlwZSkgeworICAgIGNhc2UgQWNjZXNzVHlwZTo6R2V0OgogICAgICAgICBnZXRCeUlkID0g
Z2V0QnlJZFN0YXR1cy5tYWtlc0NhbGxzKCkgPyBHZXRCeUlkRmx1c2ggOiBHZXRCeUlkOwotICAg
IGVsc2UKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpUcnlHZXQ6CiAgICAg
ICAgIGdldEJ5SWQgPSBUcnlHZXRCeUlkOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEFjY2Vz
c1R5cGU6OlB1cmVHZXQ6CisgICAgICAgIGdldEJ5SWQgPSBQdXJlR2V0QnlJZDsKKyAgICAgICAg
YnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CiAKICAgICAvLyBTcGVjaWFsIHBhdGggZm9yIGN1c3RvbSBhY2Nlc3NvcnMgc2lu
Y2UgY3VzdG9tJ3Mgb2Zmc2V0IGRvZXMgbm90IGhhdmUgYW55IG1lYW5pbmdzLgogICAgIC8vIFNv
LCB0aGlzIGlzIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gU2ltcGxlIG9uZS4gQnV0IHdlIGhh
dmUgYSBjaGFuY2UgdG8gb3B0aW1pemUgaXQgd2hlbiB3ZSB1c2UgRE9NSklULgpAQCAtNDE4Miw3
ICs0MTkxLDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAg
ICAgICAgICAgICBOb2RlKiBiYXNlID0gZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kKSk7CiAgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9IGdldChW
aXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwotICAgICAg
ICAgICAgYm9vbCBjb21waWxlZEFzR2V0QnlJZCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbCBj
b21waWxlQXNHZXRCeUlkID0gZmFsc2U7CisgICAgICAgICAgICBib29sIGNvbXBpbGVBc1B1cmVH
ZXRCeUlkID0gZmFsc2U7CiAgICAgICAgICAgICBHZXRCeUlkU3RhdHVzIGdldEJ5SWRTdGF0dXM7
CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gMDsKICAgICAgICAgICAg
IHsKQEAgLTQxOTEsNyArNDIwMSw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2hlbiB0aGUgYnl0ZWNvZGUgaXMg
bm90IGNvbXBpbGVkIGluIHRoZSBiYXNlbGluZSBKSVQsIGJ5VmFsSW5mbyBiZWNvbWVzIG51bGwu
CiAgICAgICAgICAgICAgICAgLy8gQXQgdGhhdCB0aW1lLCB0aGVyZSBpcyBubyBpbmZvcm1hdGlv
bi4KICAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmZvICYmIGJ5VmFsSW5mby0+c3R1YkluZm8g
JiYgIWJ5VmFsSW5mby0+dG9va1Nsb3dQYXRoICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJZGVudCkgJiYgIW1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENl
bGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBpbGVkQXNHZXRCeUlkID0gdHJ1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgY29tcGlsZUFzR2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGNvbXBpbGVBc1B1cmVHZXRCeUlkID0gIWJ5VmFsSW5mby0+c3R1YkluZm8tPmRpZFNp
ZGVFZmZlY3RzOwogICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyTnVtYmVyID0gbV9ncmFw
aC5pZGVudGlmaWVycygpLmVuc3VyZShieVZhbEluZm8tPmNhY2hlZElkLmltcGwoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZp
ZXJzKClbaWRlbnRpZmllck51bWJlcl07CiAKQEAgLTQyMDksOSArNDIyMCwxMCBAQCBib29sIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoY29tcGlsZWRBc0dldEJ5SWQpCi0gICAgICAg
ICAgICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBw
cmVkaWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCBBY2Nlc3NU
eXBlOjpHZXQsIE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3ZhbCkpOwotICAgICAgICAgICAgZWxz
ZSB7CisgICAgICAgICAgICBpZiAoY29tcGlsZUFzR2V0QnlJZCkgeworICAgICAgICAgICAgICAg
IEFjY2Vzc1R5cGUgdHlwZSA9IGNvbXBpbGVBc1B1cmVHZXRCeUlkID8gQWNjZXNzVHlwZTo6UHVy
ZUdldCA6IEFjY2Vzc1R5cGU6OkdldDsKKyAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeUlkKGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24sIGJhc2UsIGlkZW50aWZp
ZXJOdW1iZXIsIGdldEJ5SWRTdGF0dXMsIHR5cGUsIE9QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X3Zh
bCkpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBBcnJheU1vZGUgYXJy
YXlNb2RlID0gZ2V0QXJyYXlNb2RlKGN1cnJlbnRJbnN0cnVjdGlvbls0XS51LmFycmF5UHJvZmls
ZSwgQXJyYXk6OlJlYWQpOwogICAgICAgICAgICAgICAgIE5vZGUqIGdldEJ5VmFsID0gYWRkVG9H
cmFwaChHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0
aW9uKSwgYmFzZSwgcHJvcGVydHkpOwogICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7
IC8vIEdldEJ5VmFsIG11c3QgYmUgdHJlYXRlZCBhcyBpZiBpdCBjbG9iYmVycyBleGl0IHN0YXRl
LCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIGl0IGdlbmVyaWMuCkBAIC00MzQ3LDcgKzQzNTks
MTggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9kZmdDb2RlQmxvY2ss
CiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MsIG1fZGZnU3R1
YkluZm9zLAogICAgICAgICAgICAgICAgIGN1cnJlbnRDb2RlT3JpZ2luKCksIHVpZCk7Ci0gICAg
ICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBvcF90cnlfZ2V0X2J5X2lkID09IG9wY29kZUlEID8g
QWNjZXNzVHlwZTo6R2V0UHVyZSA6IEFjY2Vzc1R5cGU6OkdldDsKKyAgICAgICAgICAgIEFjY2Vz
c1R5cGUgdHlwZTsKKyAgICAgICAgICAgIGlmIChvcGNvZGVJRCA9PSBvcF90cnlfZ2V0X2J5X2lk
KSAKKyAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6VHJ5R2V0OworICAgICAgICAg
ICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIobV9p
bmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOworICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBjdXJyZW50Q29kZU9yaWdpbigpLmJ5dGVjb2RlSW5k
ZXg7CisgICAgICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIGluZm8gPSBtX2lubGluZVN0
YWNrVG9wLT5tX3N0dWJJbmZvcy5nZXQoQ29kZU9yaWdpbihieXRlY29kZUluZGV4KSk7CisgICAg
ICAgICAgICAgICAgaWYgKGluZm8gJiYgaW5mby0+ZXZlckNvbnNpZGVyZWQgJiYgIWluZm8tPmRp
ZFNpZGVFZmZlY3RzKQorICAgICAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6UHVy
ZUdldDsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBB
Y2Nlc3NUeXBlOjpHZXQ7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHVuc2lnbmVkIG9w
Y29kZUxlbmd0aCA9IG9wY29kZUlEID09IG9wX3RyeV9nZXRfYnlfaWQgPyBPUENPREVfTEVOR1RI
KG9wX3RyeV9nZXRfYnlfaWQpIDogT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMjA3
NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5NCw2ICs0OTQsMzUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFw
aCwgTm9kZSogbm9kZQogICAgICAgICBkZWYoSGVhcExvY2F0aW9uKElzRnVuY3Rpb25Mb2MsIE1p
c2NGaWVsZHMsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOwogICAgICAgICByZXR1
cm47CiAgICAgICAgIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6IHsKKyAgICAgICAgLy8gV2UgbW9k
ZWwgd2hhdCBpcyBhbGxvd2VkIGluc2lkZSBhIGdldE93blByb3BlcnR5U2xvdChWTUlucXVpcnkp
IGhlcmUuCisgICAgICAgIC8vIFNvbWUgZ2V0T3duUHJvcGVydHlTbG90IGltcGxlbWVudGF0aW9u
cyB3aWxsIGxhemlseSBpbmplY3QgcHJvcGVydGllcywgd2hpY2gKKyAgICAgICAgLy8gbWF5IGNo
YW5nZSB0aGUgb2JqZWN0J3Mgc3RydWN0dXJlLgorCisgICAgICAgIHJlYWQoSlNDZWxsX3N0cnVj
dHVyZUlEKTsKKyAgICAgICAgcmVhZChKU0NlbGxfdHlwZUluZm9GbGFncyk7CisgICAgICAgIHJl
YWQoSlNDZWxsX3R5cGVJbmZvVHlwZSk7CisgICAgICAgIHJlYWQoSlNDZWxsX2luZGV4aW5nVHlw
ZSk7CisgICAgICAgIHJlYWQoSlNPYmplY3RfYnV0dGVyZmx5KTsKKyAgICAgICAgcmVhZChNaXNj
RmllbGRzKTsKKworICAgICAgICBBYnN0cmFjdEhlYXAgcHJvcGVydHlOYW1lSGVhcChOYW1lZFBy
b3BlcnRpZXMsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSk7CisgICAgICAgIHJlYWQocHJvcGVy
dHlOYW1lSGVhcCk7CisKKyAgICAgICAgd3JpdGUoSlNDZWxsX3N0cnVjdHVyZUlEKTsKKyAgICAg
ICAgd3JpdGUoSlNDZWxsX3R5cGVJbmZvRmxhZ3MpOworCisgICAgICAgIHdyaXRlKFdhdGNocG9p
bnRfZmlyZSk7CisgICAgICAgIHdyaXRlKE1pc2NGaWVsZHMpOworCisgICAgICAgIC8vIFRoaXMg
Y2FuIGhhcHBlbiBpZiBsYXppbHkgYWRkaW5nIGZpZWxkcyB0byBhbiBvYmplY3QgaGFwcGVucyBp
biBnZXRPd25Qcm9wZXJ0eVNsb3QKKyAgICAgICAgLy8gYW5kIHdlIG5lZWQgdG8gYWxsb2NhdGUg
b3V0IG9mIGxpbmUgc3RvcmFnZS4KKyAgICAgICAgd3JpdGUoSlNPYmplY3RfYnV0dGVyZmx5KTsK
KworICAgICAgICBkZWYoSGVhcExvY2F0aW9uKE5hbWVkUHJvcGVydHlMb2MsIHByb3BlcnR5TmFt
ZUhlYXAsIG5vZGUtPmNoaWxkMSgpKSwgTGF6eU5vZGUobm9kZSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorCiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAg
IGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDIwNzcwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NDgsNiArNDQ4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFB1
cmVHZXRCeUlkOgogICAgICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAgICAgICAgICAgY2FzZSBH
ZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgICAgICBFZGdlIGNoaWxkRWRnZSA9IG5vZGUtPmNo
aWxkMSgpOwpAQCAtNDU5LDYgKzQ2MCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBu
b2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVh
ZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9s
ZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFs
dWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKQogICAgICAgICAgICAgICAgICAgICB8fCAobm9k
ZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRVc2UgfHwgKGJhc2VWYWx1ZS5tX3R5cGUg
JiB+U3BlY0NlbGwpKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01MTQsNiArNTE4
LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGUoaW5k
ZXhJbkJsb2NrKTsgLy8gUHVzaCBDRkEgb3ZlciB0aGlzIG5vZGUgYWZ0ZXIgd2UgZ2V0IHRoZSBz
dGF0ZSBiZWZvcmUuCiAgICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOyAvLyBE
b24ndCBhbGxvdyB0aGUgZGVmYXVsdCBjb25zdGFudCBmb2xkZXIgdG8gZG8gdGhpbmdzIHRvIHRo
aXMuCiAKKyAgICAgICAgICAgICAgICBpZiAoIU9wdGlvbnM6OnVzZUFjY2Vzc0lubGluaW5nKCkp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICAgICAgaWYgKGJhc2VW
YWx1ZS5tX3N0cnVjdHVyZS5pc1RvcCgpIHx8IGJhc2VWYWx1ZS5tX3N0cnVjdHVyZS5pc0Nsb2Ji
ZXJlZCgpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJldmlzaW9uIDIwNzcw
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjY1LDYgKzI2NSw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSkKICAgICBjYXNlIFJlc29sdmVTY29wZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgY2FzZSBQdXJlR2V0QnlJZDogLy8gV2UgYXJlIG1vZGVsaW5nIGdldE93blByb3BlcnR5U2xv
dCBoZXJlLCB3aGljaCBtYXkgR0MgYmVjYXVzZSBpdCBpcyBhbGxvd2VkIHRvIGFsbG9jYXRlIHRo
aW5ncy4KICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBDcmVhdGVEaXJlY3RB
cmd1bWVudHM6CiAgICAgY2FzZSBDcmVhdGVTY29wZWRBcmd1bWVudHM6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDIwNzcwNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNjcsNiArMTE2Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogCisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0
QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6IHsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBCeXRlQ29kZVBhcnNlciBiYXNlZCBvbiByZWFk
aW5nIHRoZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDIw
NzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01MjUsNyArNTI1LDcgQEAgcHVibGljOgogICAgIAogICAgIHZvaWQgY29udmVydFRv
R2V0QnlPZmZzZXQoU3RvcmFnZUFjY2Vzc0RhdGEmIGRhdGEsIEVkZ2Ugc3RvcmFnZSwgRWRnZSBi
YXNlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdl
dEJ5SWRGbHVzaCB8fCBtX29wID09IE11bHRpR2V0QnlPZmZzZXQpOworICAgICAgICBBU1NFUlQo
bV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHVyZUdl
dEJ5SWQgfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zmc2V0KTsKICAgICAgICAgbV9vcEluZm8gPSAm
ZGF0YTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQxKHN0b3JhZ2UpOwogICAgICAgICBjaGls
ZHJlbi5zZXRDaGlsZDIoYmFzZSk7CkBAIC01MzUsNyArNTM1LDcgQEAgcHVibGljOgogICAgIAog
ICAgIHZvaWQgY29udmVydFRvTXVsdGlHZXRCeU9mZnNldChNdWx0aUdldEJ5T2Zmc2V0RGF0YSog
ZGF0YSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09IEdldEJ5SWQgfHwgbV9vcCA9PSBH
ZXRCeUlkRmx1c2gpOworICAgICAgICBBU1NFUlQobV9vcCA9PSBHZXRCeUlkIHx8IG1fb3AgPT0g
R2V0QnlJZEZsdXNoIHx8IG1fb3AgPT0gUHVyZUdldEJ5SWQpOwogICAgICAgICBtX29wSW5mbyA9
IGRhdGE7CiAgICAgICAgIGNoaWxkMSgpLnNldFVzZUtpbmQoQ2VsbFVzZSk7CiAgICAgICAgIG1f
b3AgPSBNdWx0aUdldEJ5T2Zmc2V0OwpAQCAtOTExLDYgKzkxMSw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICAgICAgY2Fz
ZSBHZXRCeUlkOgorICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5
SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgUHV0
QnlJZDoKQEAgLTE0MjEsNiArMTQyMiw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBBcml0aENl
aWw6CiAgICAgICAgIGNhc2UgQXJpdGhUcnVuYzoKICAgICAgICAgY2FzZSBHZXREaXJlY3RQbmFt
ZToKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkOgogICAg
ICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAyMDc3
MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NSw2ICsxODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykg
XAogICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFy
QXJncykgXAogICAgIG1hY3JvKFRyeUdldEJ5SWQsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KFB1cmVHZXRCeUlkLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFj
cm8oR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3Jv
KEdldEJ5SWRGbHVzaCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1h
Y3JvKEdldEJ5SWRXaXRoVGhpcywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02ODIsNiArNjgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBSZWdF
eHBUZXN0OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2U6CiAgICAgICAgIGNhc2UgU3RyaW5n
UmVwbGFjZVJlZ0V4cDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgY2FzZSBH
ZXRCeUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICAgICAgY2FzZSBHZXRCeUlk
V2l0aFRoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw2ICsxOTksNyBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBUcnlHZXRCeUlk
OgogICAgIGNhc2UgRGVsZXRlQnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5VmFsOgorICAgIGNhc2Ug
UHVyZUdldEJ5SWQ6CiAgICAgY2FzZSBHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlz
OgogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMjA3
NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjEwLDYgKzIxMCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNhY2hlZEdldEJ5SWQoCiAgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGdldEJ5SWRGdW5j
dGlvbjsKICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgIGdldEJ5SWRG
dW5jdGlvbiA9IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZTsKKyAgICBlbHNlIGlmICh0eXBlID09
IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlv
blB1cmVHZXRCeUlkT3B0aW1pemU7CiAgICAgZWxzZQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24g
PSBvcGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CiAKQEAgLTQyNjksNiArNDI3MSw0NyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6IHsKKyAgICAgICAgc3dpdGNoIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBDZWxsVXNlOiB7CisgICAgICAgICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0UGF5bG9hZCh0aGlzLCBSZXVzZSwgYmFzZSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJl
ZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVz
dWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CisKKyAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBJbnZhbGlkR1BSUmVnLCBiYXNlR1BSLCBy
ZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwg
SklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgY2FzZSBVbnR5cGVkVXNlOiB7CisgICAgICAgICAgICBKU1ZhbHVlT3Bl
cmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSByZXN1bHRUYWcodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9h
ZCh0aGlzLCBSZXVzZSwgYmFzZSwgVGFnV29yZCk7CisgICAgICAgIAorICAgICAgICAgICAgR1BS
UmVnIGJhc2VUYWdHUFIgPSBiYXNlLnRhZ0dQUigpOworICAgICAgICAgICAgR1BSUmVnIGJhc2VQ
YXlsb2FkR1BSID0gYmFzZS5wYXlsb2FkR1BSKCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0
VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdFBheWxv
YWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICAKKyAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZS5qc1ZhbHVl
UmVncygpKTsKKyAgICAgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGlj
LCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2Fk
R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpQdXJlR2V0KTsKKworICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgICAgIAorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOiB7CiAgICAgICAg
IEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBKU1Zh
bHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24g
MjA3NzA0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDggKzE3OSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjYWNoZWRHZXRCeUlkKENvZGVPCiAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoc2xvd1Bh
dGhUYXJnZXQpOwogICAgIHNsb3dDYXNlcy5hcHBlbmQoZ2VuLnNsb3dQYXRoSnVtcCgpKTsKICAg
ICAKKyAgICBhdXRvIHNsb3dQYXRoRnVuY3Rpb24gPSB0eXBlID09IEFjY2Vzc1R5cGU6OkdldCA/
IG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZSA6CisgICAgICAgIHR5cGUgPT0gQWNjZXNzVHlwZTo6
UHVyZUdldCA/IG9wZXJhdGlvblB1cmVHZXRCeUlkT3B0aW1pemUgOiBvcGVyYXRpb25UcnlHZXRC
eUlkT3B0aW1pemU7CisKICAgICBhdXRvIHNsb3dQYXRoID0gc2xvd1BhdGhDYWxsKAotICAgICAg
ICBzbG93Q2FzZXMsIHRoaXMsIHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0
QnlJZE9wdGltaXplIDogb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplLAorICAgICAgICBzbG93
Q2FzZXMsIHRoaXMsIHNsb3dQYXRoRnVuY3Rpb24sCiAgICAgICAgIHNwaWxsTW9kZSwgRXhjZXB0
aW9uQ2hlY2tSZXF1aXJlbWVudDo6Q2hlY2tOZWVkZWQsCiAgICAgICAgIHJlc3VsdEdQUiwgZ2Vu
LnN0dWJJbmZvKCksIGJhc2VHUFIsIGlkZW50aWZpZXJVSUQoaWRlbnRpZmllck51bWJlcikpOwog
ICAgIApAQCAtNDIzNSw2ICs0MjM4LDQwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBQdXJlR2V0QnlJ
ZDogeworICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAg
ICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2Uo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKKworICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOworICAgICAg
ICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKworICAgICAgICAgICAgY2Fj
aGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9k
ZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwg
QWNjZXNzVHlwZTo6UHVyZUdldCk7CisKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0
R1BSLCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
VW50eXBlZFVzZTogeworICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNl
LCBiYXNlKTsKKyAgICAgICAgCisgICAgICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3By
KCk7CisgICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAg
ICAKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAgICAgICAKKyAgICAgICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5v
ZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6
OlB1cmVHZXQpOworICAgICAgICAKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BS
LCBub2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAg
IGlmICghbm9kZS0+cHJlZGljdGlvbigpKSB7CiAgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDcgKzEwMDMsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgYmFzZS51c2UoKTsK
IAotICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3Ms
IHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAo
KSwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlk
ZW50aWZpZXJOdW1iZXIoKSwgSklUQ29tcGlsZXI6Okp1bXAoKSwgTmVlZFRvU3BpbGwsIEFjY2Vz
c1R5cGU6OlRyeUdldCk7CiAKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRSZWdzLCBub2Rl
LCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMTAyMCw3ICsxMDIwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRy
eUdldEJ5SWQoTgogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5i
cmFuY2hJZk5vdENlbGwoYmFzZVJlZ3MpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51
bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAg
ICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0
UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBOZWVkVG9TcGlsbCwgQWNj
ZXNzVHlwZTo6VHJ5R2V0KTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5v
ZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKICAgICAgICAg
YnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRp
ZXMuY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsNyBAQCBpbmxp
bmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogCiAgICAgY2FzZSBOZXdBcnJheVdp
dGhTaXplOgogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWQ6CisgICAgY2Fz
ZSBQdXJlR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRX
aXRoVGhpczoKICAgICBjYXNlIFRvVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjIzLDcgKzYyMywxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY29tcGlsZVB1dFN0cnVjdHVy
ZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVHJ5R2V0QnlJZDoKLSAgICAg
ICAgICAgIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICAgICAg
Y29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6VHJ5R2V0KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFB1cmVHZXRCeUlkOgorICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNj
ZXNzVHlwZTo6UHVyZUdldCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDoKQEAgLTI3ODgsNyArMjc5MSw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlIHR5cGUpCiAg
ICAgewotICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgfHwgdHlwZSA9PSBB
Y2Nlc3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgQVNTRVJUKHR5cGUgPT0gQWNjZXNzVHlwZTo6
R2V0IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6VHJ5R2V0IHx8IHR5cGUgPT0gQWNjZXNzVHlwZTo6
UHVyZUdldCk7CiAgICAgICAgIHN3aXRjaCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsK
ICAgICAgICAgY2FzZSBDZWxsVXNlOiB7CiAgICAgICAgICAgICBzZXRKU1ZhbHVlKGdldEJ5SWQo
bG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKSwgdHlwZSkpOwpAQCAtMjgxNSw2ICsyODE4LDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIEpfSklUT3BlcmF0aW9uX0VKSSBnZXRCeUlkRnVuY3Rpb247
CiAgICAgICAgICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQpCiAgICAgICAgICAgICAg
ICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uR2V0QnlJZEdlbmVyaWM7CisgICAgICAgICAg
ICBlbHNlIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAg
Z2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljOwogICAgICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgICAgIGdldEJ5SWRGdW5jdGlvbiA9IG9wZXJhdGlvblRyeUdl
dEJ5SWRHZW5lcmljOwogCkBAIC04ODM4LDYgKzg4NDMsOCBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRVNzaUpJIG9wdGltaXphdGlvbkZ1bmN0aW9u
OwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0KQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0
aW9uR2V0QnlJZE9wdGltaXplOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
dGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
bWl6YXRpb25GdW5jdGlvbiA9IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAy
MDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSwyNCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorQUxX
QVlTX0lOTElORSBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgcHVyZUdldEJ5SWRDb21tb24oVk0mIHZt
LCBFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBs
KiB1aWQsIGNvbnN0IHN0ZDo6ZnVuY3Rpb248dm9pZCAoY29uc3QgUHJvcGVydHlTbG90JiwgY29u
c3QgSWRlbnRpZmllciYpPiYgZnVuY3Rpb24gPSBbXSAoY29uc3QgUHJvcGVydHlTbG90JiwgY29u
c3QgSWRlbnRpZmllciYpIHsgfSkKK3sKKyAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmll
cjo6ZnJvbVVpZCgmdm0sIHVpZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoYmFzZSk7CisKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUsIFByb3BlcnR5
U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCwgWyZd
IChib29sLCBQcm9wZXJ0eVNsb3QmKSAtPiBKU1ZhbHVlIHsKKyAgICAgICAgYm9vbCB3aWxsRG9T
aWRlRWZmZWN0cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3Qu
aXNUYWludGVkQnlPcGFxdWVPYmplY3QoKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHdpbGxEb1Np
ZGVFZmZlY3RzKSkgeworICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpldHRpc29uKFBy
b2ZpbGVyOjpKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzKTsKKyAgICAgICAgICAgIHJl
dHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHVpZCk7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbihzbG90LCBpZGVudCk7CisgICAgICAgIHJldHVybiBzbG90LmlzVmFsdWUoKSA/IHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKKyAgICB9KSk7Cit9CisKIGV4
dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE2NCw2ICsxODIsMzggQEAgaW50
MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVybiBtaXNzaW5n
QXJnQ291bnQ7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVy
ZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBO
YXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJl
R2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1
Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJp
bmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBzdHViSW5mby0+dG9va1Nsb3dQ
YXRoID0gdHJ1ZTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJh
c2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVy
ZUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHVi
SW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAg
ICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJh
c2UsIHVpZCwgCisgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBjb25zdCBJ
ZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICAgICAgQVNTRVJUKChzbG90LmlzVmFsdWUoKSB8
fCBzbG90LmlzVW5zZXQoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShiYXNlKTsKKyAg
ICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1
cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZh
bHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAg
IH0pOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5
SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRK
U1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0qIHZtID0gJmV4
ZWMtPnZtKCk7CkBAIC0xNzgsNyArMjI4LDYgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5nZXRQdXJlUmVz
dWx0KCkpOwogfQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBiYXNlLCBVbmlx
dWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgpOwpAQCAtMjAz
LDcgKzI1Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHIKIAog
ICAgIGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpOwogICAgIGlm
IChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVPck51bGwoKSkg
JiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkKLSAg
ICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJ
bmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJh
c2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRyeSk7CiAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsKIH0KQEAgLTIy
Miw3ICsyNzEsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZQog
ICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1aWQpOwogICAg
IAogICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZhbHVlLmNsYXNz
SW5mb09yTnVsbCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYmFzZVZh
bHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZh
bHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgYm9vbCB3aWxsRG9TaWRlRWZmZWN0cyA9
ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNUYWludGVkQnlP
cGFxdWVPYmplY3QoKTsKKyAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0gd2lsbERvU2lk
ZUVmZmVjdHM7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwogfQogCiBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0
ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKQEAg
LTI1MSw2ICszMDMsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdl
CiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0aW1pemUsIGJhc2VWYWx1
ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChib29sIGZvdW5k
LCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBib29sIHdpbGxEb1Np
ZGVFZmZlY3RzID0gIShzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgfHwgc2xvdC5p
c1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOworICAgICAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVj
dHMgfD0gd2lsbERvU2lkZUVmZmVjdHM7CisKICAgICAgICAgaWYgKHN0dWJJbmZvLT5jb25zaWRl
ckNhY2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAgICAgIHJlcGF0
Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJ
REtpbmQ6Ok5vcm1hbCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0VmFsdWUoZXhl
YywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYgKzMzMCw5
IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVuY29kZWRKU1Zh
bHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUqLCBTdHJ1Y3R1
cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCopIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZEdl
bmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RG
X0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlHZXRC
eUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNvZGVkSlNWYWx1
ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwor
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWMo
RXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVS
TkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJZE9w
dGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVu
aXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJB
VElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5j
b2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVjU3RhdGUqLCBF
bmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVy
dHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9nZXRfYnlfaWQo
SW5zdHJ1Y3QKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAgICBtX2NvZGVC
bG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRleChjdXJyZW50
SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0ZXJzKCksCi0g
ICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShyZWdUMCksIEpT
VmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBp
ZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBKU1ZhbHVlUmVn
cyhyZWdUMSwgcmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5nZW5lcmF0ZUZh
c3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAg
IG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjA3NzA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5X2lkKEluc3Ry
dWN0CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9jb2RlQmxvY2ss
IENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9ieXRlY29kZU9m
ZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwKLSAgICAgICAg
aWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhyZWdUMCksIEFj
Y2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsKICAgICBnZW4u
Z2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNsb3dQYXRoSnVt
cCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYgKzEzNCwzMCBA
QCBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxpbmUgSl9KSVRP
cGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5jdGlvbihHZXRC
eUlES2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpOb3JtYWwpCisg
ICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFsOgogICAgICAg
ICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBvcGVyYXRpb25U
cnlHZXRCeUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0QnlJREtpbmQ6
OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOworICAg
IGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KIH0KIAogaW5s
aW5lIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rp
b24oR2V0QnlJREtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBHZXRCeUlES2luZDo6Tm9y
bWFsKQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJREtpbmQ6Ok5vcm1hbDoK
ICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7Ci0gICAgcmV0dXJuIG9wZXJhdGlvblRy
eUdldEJ5SWQ7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICByZXR1cm4gb3Bl
cmF0aW9uVHJ5R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgorICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uUHVyZUdldEJ5SWQ7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5
Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8sIEdldEJ5SURLaW5kIGtpbmQpCkBAIC0yNzEsNiArMjg1LDE2
IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAg
ICAgICB0eXBlID0gQWNjZXNzQ2FzZTo6TG9hZDsKICAgICAgICAgICAgIGVsc2UgaWYgKHNsb3Qu
aXNVbnNldCgpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpNaXNzOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjp0cnlHZXQodm0sIGNvZGVC
bG9jaywgdHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9hZFRhcmdldEZy
b21Qcm94eSwgc2xvdC53YXRjaHBvaW50U2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGtpbmQg
PT0gR2V0QnlJREtpbmQ6OlRyeSkgeworICAgICAgICAgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlw
ZSB0eXBlOworICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQorICAgICAg
ICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpMb2FkOworICAgICAgICAgICAgZWxzZSBpZiAo
c2xvdC5pc1Vuc2V0KCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6Ok1pc3M7
CiAgICAgICAgICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCiAgICAgICAg
ICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6OkdldEdldHRlcjsKICAgICAgICAgICAgIGVsc2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAyMDc3MDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBjb3B5KQpAQCAt
MzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRCeUlES2luZCB7
CiAgICAgTm9ybWFsLAorICAgIFRyeSwKICAgICBQdXJlCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFz
b24uY3BwCShyZXZpc2lvbiAyMDc3MDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpldAogICAgIGNhc2Ug
SmV0dGlzb25EdWVUb09TUkV4aXQ6CiAgICAgICAgIG91dC5wcmludCgiT1NSRXhpdCIpOwogICAg
ICAgICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzOgor
ICAgICAgICBvdXQucHJpbnQoIlB1cmVHZXRCeUlkRWZmZWN0cyIpOworICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50OgogICAgICAgICBvdXQu
cHJpbnQoIlByb2ZpbGVkV2F0Y2hwb2ludCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29u
UmVhc29uLmgJKHJldmlzaW9uIDIwNzcwNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1
LDcgQEAgZW51bSBKZXR0aXNvblJlYXNvbiB7CiAgICAgSmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9v
cFJlb3B0aW1pemF0aW9uVHJpZ2dlciwKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVv
cHRpbWl6YXRpb25UcmlnZ2VyT25PU1JFbnRyeUZhaWwsCiAgICAgSmV0dGlzb25EdWVUb09TUkV4
aXQsCisgICAgSmV0dGlzb25EdWVUb1B1cmVHZXRCeUlkRWZmZWN0cywKICAgICBKZXR0aXNvbkR1
ZVRvUHJvZmlsZWRXYXRjaHBvaW50LAogICAgIEpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hw
b2ludCwKICAgICBKZXR0aXNvbkR1ZVRvT2xkQWdlCg==
</data>
<flag name="review"
          id="315659"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293317</attachid>
            <date>2016-10-29 16:54:26 -0700</date>
            <delta_ts>2016-10-29 17:07:16 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>44728</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgxMTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNzZS0yLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNzZS5qczogQWRkZWQu
CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29y
cmVjdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1vYmplY3QuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTYtMTAtMjggIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBTa2lwIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbnNlLXNldC5qcyBvbiBtZW1vcnkgbGltaXRlZCBkZXZpY2VzCkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2UtMi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2UtMi5qcwko
cmV2aXNpb24gMCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNz
ZS0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIGZvbyhvLCBj
KSB7CisgICAgaWYgKG8uZikgeworICAgICAgICBsZXQgc3VtID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBjOyBpKyspCisgICAgICAgICAgICBzdW0gKz0gby5mOworICAgICAgICBy
ZXR1cm4gc3VtOworICAgIH0KK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGFydCA9IERhdGUu
bm93KCk7CitsZXQgb2JqZWN0cyA9IFtdOworY29uc3Qgb2JqZWN0Q291bnQgPSAyMDsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7IGkrKykgeworICAgIGxldCBvYmogPSB7fTsKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHsKKyAgICAgICAgb2JqWyJqIiArIGpd
ID0gajsKKyAgICB9CisgICAgb2JqLmYgPSAyMDsKKyAgICBvYmplY3RzLnB1c2gob2JqKTsKK30K
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKKyAgICBsZXQgb2JqID0gb2Jq
ZWN0c1tpICUgb2JqZWN0cy5sZW5ndGhdOworICAgIGZvbyhvYmosIDE1MCk7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2Uu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLmpzCShyZXZpc2lvbiAwKQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKK2Z1bmN0aW9uIGZv
byhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8uZiArIG8uZiArIG8uZiArIG8u
ZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBEYXRlLm5vdygpOworbGV0IG9i
amVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citmb3IgKGxldCBpID0gMDsgaSA8
IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307CisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIgKyBqXSA9IGo7CisgICAgfQor
ICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7Cit9CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmpl
Y3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0IHZlcmJvc2UgPSBmYWxzZTsK
K2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29ycmVjdG5lc3MuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNvcnJlY3RuZXNzLmpzCShyZXZp
c2lvbiAwKQorKysgSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNvcnJlY3RuZXNz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7
CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKQor
fQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24gZm9vKG8xLCBvMikgeworICAgIGxldCBh
ID0gbzEuZjE7CisgICAgbGV0IGIgPSBvMi5mMjsKKyAgICByZXR1cm4gYSArIG8xLmYxICsgYjsK
K30KK25vSW5saW5lKGZvbyk7CisKK2xldCBvYmpzID0gW107Citjb25zdCBjb3VudCA9IDgwOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikgeworICAgICAgICBvW2ogKyAiSiJdID0gajsKKyAg
ICB9CisgICAgby5mMSA9IDIwOworICAgIG8uZjIgPSA0MDsKKyAgICBvYmpzLnB1c2gobyk7Cit9
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgbGV0IG8xID0gb2Jqc1tp
ICUgb2Jqcy5sZW5ndGhdOworICAgIGxldCBvMiA9IG9ianNbKGkgKyAxKSAlIG9ianMubGVuZ3Ro
XTsKKyAgICBhc3NlcnQoZm9vKG8xLCBvMikgPT09IDgwKTsKK30KKworbGV0IG8gPSBvYmpzW2Nv
dW50IC0gMV07CitsZXQgbnVtQ2FsbHMgPSAwOworT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sICJm
MSIsIHsKKyAgICBnZXQoKSB7ICsrbnVtQ2FsbHM7IHJldHVybiAyNTsgfQorfSk7CisKK2Fzc2Vy
dChmb28obywgb2Jqc1tjb3VudCAtIDJdKSA9PT0gOTApOworYXNzZXJ0KG51bUNhbGxzID09PSAy
KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1vYmplY3QuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtb24tbm9uLW9iamVj
dC5qcwkocmV2aXNpb24gMCkKKysrIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbi4iKQorfQorCitmdW5jdGlvbiBmb28obykgeworICAgIGFzc2VydChvLmxlbmd0aCA9PT0g
by5sZW5ndGgpOworICAgIHJldHVybiBvLmxlbmd0aDsKK30KK25vSW5saW5lKGZvbyk7CisKK2xl
dCBpdGVtcyA9IFtdOworY29uc3QgbnVtSXRlbXMgPSAzMDsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
bnVtSXRlbXM7IGkrKykgeworICAgIGxldCBvID0ge307CisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCBpOyBqKyspIHsKKyAgICAgICAgb1tqICsgImoiXSA9IGo7CisgICAgfQorICAgIG8ubGVuZ3Ro
ID0gMjsKKyAgICBpdGVtcy5wdXNoKG8pOworfSAKKworaXRlbXMucHVzaCgic3QiKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGFzc2VydChmb28oaXRlbXNbaSAlIGl0
ZW1zLmxlbmd0aF0pID09PSAyKTsKKworTnVtYmVyLnByb3RvdHlwZS5sZW5ndGggPSAyOworaXRl
bXMucHVzaCg0Mik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspCisgICAgYXNz
ZXJ0KGZvbyhpdGVtc1tpICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisyMDE2LTEwLTI5ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZl
IGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEgZ2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQg
YSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGgg
TWlsbGVyLgorCisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBHZXRCeUlkIG5vZGUgaW4gdGhl
IERGRyBjYWxsZWQgUHVyZUdldEJ5SWQuIFdlIGVtaXQgYQorICAgICAgICBQdXJlR2V0QnlJZCB3
aGVuIHdlIHByb2ZpbGUgdGhhdCBhIGdldF9ieV9pZCBpbiB0aGUgYmFzZWxpbmUgbmV2ZXIgZG9l
cworICAgICAgICBzaWRlIGVmZmVjdHMuIFB1cmVHZXRCeUlkIHNwZWN1bGF0ZXMgb24gdGhlIGZh
Y3QgdGhhdCBpdCB3b24ndCBkbyBzaWRlCisgICAgICAgIGVmZmVjdHMuIElmIGl0IHJlYWxpemVz
IHRoYXQgaXQgbXVzdCBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaXQgd2lsbCBwZXJmb3JtCisgICAg
ICAgIHRoZSBzaWRlIGVmZmVjdCwgYnV0IGFsc28gaW52YWxpZGF0ZSB0aGUgQ29kZUJsb2NrIHRo
YXQgY29tcGlsZWQgaXQsCisgICAgICAgIHdoaWNoIHdpbGwgY2F1c2UgdXMgdG8gZXhpdCBvbmNl
IHdlIHJldHVybiBiYWNrIHRvIHRoZSBjb21waWxlZCBjb2RlLgorICAgICAgICBUaGlzIGFsbG93
cyB1cyB0byBoYXZlIHN0cmljdGVyIGNsb2JiZXJpemUgcnVsZXMgZm9yIFB1cmVHZXRCeUlkIHdo
aWNoCisgICAgICAgIG1vZGVsIGhvdyBnZXRPd25Qcm9wZXJ0eVNsb3QoVk1JbnF1aXJ5KSBiZWhh
dmVzLiBUaGlzIG1lYW5zIHRoYXQgUHVyZUdldEJ5SWRzCisgICAgICAgIGNhbiBiZSBDU0VkIHdp
dGggZWFjaCBvdGhlciwgYW5kIHRoYXQgb3RoZXIgdGhpbmdzIGFyZSBtb3JlIGxpa2VseSB0bwor
ICAgICAgICBiZSBDU0VkIGFyb3VuZCBhIFB1cmVHZXRCeUlkLiBUbyBwcm9maWxlIGlmIGEgZ2V0
X2J5X2lkIGRvZXMgc2lkZQorICAgICAgICBlZmZlY3RzLCBJJ3ZlIGFkZGVkIGFuIGV4dHJhIGJp
dCBpbnRvIFN0cnVjdHVyZVN0dWJJbmZvIHRoYXQgd2Ugd3JpdGUKKyAgICAgICAgdG8gd2hlbiBw
ZXJmb3JtaW5nIGEgZ2V0X2J5X2lkIHNsb3cgcGF0aCBjYWxsLiBJZiB3ZSBub3RpY2UgdGhhdCB3
ZQorICAgICAgICBuZXZlciBkbyBlZmZlY3RzLCBpbnNpZGUgdGhlIEJ5dGVDb2RlUGFyc2VyLCB3
ZSB3aWxsIGVtaXQgYSBQdXJlR2V0QnlJZAorICAgICAgICBpbnN0ZWFkIG9mIGEgR2V0QnlJZC4K
KworICAgICAgICBUbyBqdXN0aWZ5IHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0IG9mIHRoaXMgcGF0
Y2gsIEkgcmFuIHRoZSBzdWl0ZSBvZgorICAgICAgICBiZW5jaG1hcmtzIHdpdGggdXNlQWNjZXNz
SW5saW5pbmc9ZmFsc2UuIFRoaXMgbWVhbnQgdGhhdCB3ZSBkb24ndCBjb21waWxlCisgICAgICAg
IGFueSAoTXVsdGkpR2V0QnlPZmZzZXQvKE11bHRpKVB1dEJ5T2Zmc2V0LiBUaGlzIHdhcyBqdXN0
IHRvIHRyeSB0byBzZWUgaWYKKyAgICAgICAgdGhpcyBwYXRjaCBpcyB3b3J0aCBhbnl0aGluZyBh
dCBhbGwgaW4gYSB3b3JsZCB3aGVyZSB3ZSBlbWl0IG1hbnkKKyAgICAgICAgUHVyZUdldEJ5SWRz
LiBSdW5uaW5nIHRoZSBiZW5jaG1hcmtzIHVuZGVyIHRoaXMgbW9kZSBzaG93ZWQgYSAzLjUlIG9j
dGFuZQorICAgICAgICBpbXByb3ZlbWVudCBhbmQgYSAxNSUga3Jha2VuIGltcHJvdmVtZW50LiBI
b3dldmVyLCB3aGVuIHJ1bm5pbmcgYmVuY2htYXJrcworICAgICAgICB3aXRoIHVzZUFjY2Vzc0lu
bGluaW5nPXRydWUgKHRoZSBkZWZhdWx0IEpTQyBzdGF0ZSksIHRoaXMgcGF0Y2ggaXMgbmV1dHJh
bC4KKyAgICAgICAgSSB0aGluayB0aGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGUg
REZHIGlzIGdvb2QgYXQga25vd2luZyB3aGVuIHRvCisgICAgICAgIGVtaXQgKE11bHRpKUdldEJ5
T2Zmc2V0LCBhbmQgbW9zdCBiZW5jaG1hcmtzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tCisgICAg
ICAgIFB1cmVHZXRCeUlkIGFyZSBhbHJlYWR5IGVtaXR0aW5nIChNdWx0aSlHZXRCeU9mZnNldC4g
SG93ZXZlciwgUHVyZUdldEJ5SWQgY2FuIGJlCisgICAgICAgIHByb2ZpdGFibGUgd2hlbiB3ZSBl
bmNvdW50ZXIgY29kZSB0aGF0IGlzIHRvbyBwb2x5bW9ycGhpYyBmb3IgKE11bHRpKUdldEJ5T2Zm
c2V0LgorICAgICAgICBJdCdzIHJlYXNvbmFibGUgdG8gZXhwZWN0IHRoYXQgSlMgY29kZSBpbiB0
aGUgd2lsZCB3aWxsIGZhbGwgaW50byB0aGlzIHVzZQorICAgICAgICBjYXNlIGV2ZW4gdGhvdWdo
IGl0IG1pZ2h0IG5vdCBiZSByZXByZXNlbnRlZCBpbiBzb21lIG9mIHRoZSBtYWpvciBKUyBiZW5j
aG1hcmtzLgorICAgICAgICBJIHdyb3RlIHNvbWUgbWljcm9iZW5jaG1hcmtzIHRvIGRlbW9uc3Ry
YXRlIHRoZSBiZW5lZml0cyBvZiBQdXJlR2V0QnlJZCBDU0UsCisgICAgICAgIGFuZCB0aGV5IHdl
cmUgMzAlIChlbGltaW5hdGluZyBhIGZldyBQdXJlR2V0QnlJZCBmcm9tIGFuIGFkZCBleHByZXNz
aW9uKQorICAgICAgICB0byAxMHggZmFzdGVyIChlbGltaW5hdGluZyBhIFB1cmVHZXRCeUlkIGlu
IGEgbG9vcCkuCisKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1v
ZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbkJlY29tZUdldEFycmF5TGVuZ3RoKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0QnlPZmZzZXQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVyZUdldEJ5SWQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXJlR2V0QnlJ
ZENvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dl
dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGppdC9SZXBhdGNo
Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0
dGlzb25SZWFzb24uaDoKKwogMjAxNi0xMC0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJyZWFrcG9pbnRzIG5vdCB3b3Jr
aW5nIGluIHNjcmlwdHMgd2l0aCB1bmljb2RlIGNoYXJhY3RlcnMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2
aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBTdHJ1Y3R1cmVT
dHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCByZXNldEJ5R0MoZmFsc2UpCiAg
ICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29uc2lkZXJlZChmYWxzZSkKKyAg
ICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0yMTYsNyArMjE3LDEwIEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoKICAgICB9CiAKICAgICBzd2l0
Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFB1cmU6CisgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpUcnlHZXQ6CisgICAgICAgIHJlc2V0R2V0QnlJRChjb2RlQmxvY2ssICp0
aGlzLCBHZXRCeUlES2luZDo6VHJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpQdXJlR2V0OgogICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0
QnlJREtpbmQ6OlB1cmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYs
OCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzczsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDog
aW50OF90IHsKICAgICBHZXQsCi0gICAgR2V0UHVyZSwKKyAgICBUcnlHZXQsCisgICAgUHVyZUdl
dCwKICAgICBQdXQsCiAgICAgSW4KIH07CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgcmVzZXRCeUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9v
bCBldmVyQ29uc2lkZXJlZCA6IDE7CisgICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9Owog
CiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0
dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAko
cmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAg
ICAgICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNs
b2JiZXJMaW1pdCk7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlkKQorICAg
ICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxp
bWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVh
azsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFycmF5TW9k
ZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2FuQmVjb21l
R2V0QXJyYXlMZW5ndGgoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogewotICAgIGlmIChub2Rl
LT5vcCgpICE9IEdldEJ5SWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHVpZCA9
IGdyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICByZXR1
cm4gdWlkID09IGdyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsKKyAgICBp
ZiAobm9kZS0+b3AoKSA9PSBHZXRCeUlkIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpIHsK
KyAgICAgICAgYXV0byB1aWQgPSBncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKV07CisgICAgICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGguaW1wbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFycmF5TW9k
ZSBBcnJheU1vZGU6OnJlZmluZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMwNywxMCArMzMwNywxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09IEFjY2Vz
c1R5cGU6OkdldCkKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKICAgICAgICAgZ2V0QnlJZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJ
ZEZsdXNoIDogR2V0QnlJZDsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6VHJ5R2V0OgogICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXJlR2V0OgorICAgICAgICBnZXRCeUlkID0g
UHVyZUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgLy8gU3BlY2lhbCBwYXRoIGZv
ciBjdXN0b20gYWNjZXNzb3JzIHNpbmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBoYXZlIGFu
eSBtZWFuaW5ncy4KICAgICAvLyBTbywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9t
IFNpbXBsZSBvbmUuIEJ1dCB3ZSBoYXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdoZW4gd2Ug
dXNlIERPTUpJVC4KQEAgLTQxOTgsNyArNDIwNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAg
Tm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5SWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworICAgICAgICAg
ICAgYm9vbCBjb21waWxlQXNQdXJlR2V0QnlJZCA9IGZhbHNlOwogICAgICAgICAgICAgR2V0QnlJ
ZFN0YXR1cyBnZXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IDA7CiAgICAgICAgICAgICB7CkBAIC00MjA3LDcgKzQyMTcsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBi
eVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwg
dGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAm
JiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aCAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkSWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBjb21waWxl
ZEFzR2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVBc0dldEJ5SWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb21waWxlQXNQdXJlR2V0QnlJZCA9ICFieVZh
bEluZm8tPnN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0czsKICAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJbmZvLT5j
YWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCkBAIC00MjI1
LDkgKzQyMzYsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbXBp
bGVkQXNHZXRCeUlkKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwg
Z2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0LCBPUENPREVfTEVOR1RIKG9wX2dldF9ieV92
YWwpKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBpbGVBc0dldEJ5
SWQpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBjb21waWxlQXNQdXJlR2V0
QnlJZCA/IEFjY2Vzc1R5cGU6OlB1cmVHZXQgOiBBY2Nlc3NUeXBlOjpHZXQ7CisgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVk
aWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBlLCBPUENP
REVfTEVOR1RIKG9wX2dldF9ieV92YWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBO
b2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNX
b3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBHZXRCeVZhbCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYg
aXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSBpdCBnZW5l
cmljLgpAQCAtNDM2Myw3ICs0Mzc1LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gb3BfdHJ5X2dl
dF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6OkdldFB1cmUgOiBBY2Nlc3NUeXBlOjpH
ZXQ7CisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5
cGU6OlRyeUdldDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9s
b2NrKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3VycmVudENv
ZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBpbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8tPmV2ZXJD
b25zaWRlcmVkICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IEFjY2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90cnlfZ2V0
X2J5X2lkID8gT1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9MRU5HVEgo
b3BfZ2V0X2J5X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNiArNDk1LDM1IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVHZXRCeUlk
OiB7CisgICAgICAgIC8vIFdlIG1vZGVsIHdoYXQgaXMgYWxsb3dlZCBpbnNpZGUgYSBnZXRPd25Q
cm9wZXJ0eVNsb3QoVk1JbnF1aXJ5KSBoZXJlLgorICAgICAgICAvLyBTb21lIGdldE93blByb3Bl
cnR5U2xvdCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBsYXppbHkgaW5qZWN0IHByb3BlcnRpZXMsIHdo
aWNoCisgICAgICAgIC8vIG1heSBjaGFuZ2UgdGhlIG9iamVjdCdzIHN0cnVjdHVyZS4KKworICAg
ICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJ
bmZvRmxhZ3MpOworICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBy
ZWFkKEpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZs
eSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisKKyAgICAgICAgQWJzdHJhY3RIZWFwIHBy
b3BlcnR5TmFtZUhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
OworICAgICAgICByZWFkKHByb3BlcnR5TmFtZUhlYXApOworCisgICAgICAgIHdyaXRlKEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKKwor
ICAgICAgICB3cml0ZShXYXRjaHBvaW50X2ZpcmUpOworICAgICAgICB3cml0ZShNaXNjRmllbGRz
KTsKKworICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgbGF6aWx5IGFkZGluZyBmaWVsZHMg
dG8gYW4gb2JqZWN0IGhhcHBlbnMgaW4gZ2V0T3duUHJvcGVydHlTbG90CisgICAgICAgIC8vIGFu
ZCB3ZSBuZWVkIHRvIGFsbG9jYXRlIG91dCBvZiBsaW5lIHN0b3JhZ2UuCisgICAgICAgIHdyaXRl
KEpTT2JqZWN0X2J1dHRlcmZseSk7CisKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFBy
b3BlcnR5TG9jLCBwcm9wZXJ0eU5hbWVIZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDYgKzQ0OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgRWRn
ZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKQEAgLTQ1OSw2ICs0NjAsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
ICAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRo
ZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KIAorICAgICAg
ICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBpZiAoYmFzZVZhbHVlLm1fc3RydWN0
dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzQ2xvYmJlcmVkKCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
IHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTE0LDYgKzUxOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBu
b2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVh
ZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9s
ZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFs
dWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6IC8vIFdlIGFyZSBtb2Rl
bGluZyBnZXRPd25Qcm9wZXJ0eVNsb3QgaGVyZSwgd2hpY2ggbWF5IEdDIGJlY2F1c2UgaXQgaXMg
YWxsb3dlZCB0byBhbGxvY2F0ZSB0aGluZ3MuCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgog
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNv
ZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRh
LCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09
IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zm
c2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRG
bHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7
CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShz
dG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNTQyLDcgKzU0
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQo
TXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9
PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5k
KENlbGxVc2UpOwogICAgICAgICBtX29wID0gTXVsdGlHZXRCeU9mZnNldDsKQEAgLTkxOCw2ICs5
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFRy
eUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJ
ZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CkBAIC0xNDI4LDYgKzE0MjksNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgogICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAg
ICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2Rl
UmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXJlR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgyLDYgKzY4Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNl
OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CisgICAgICAgIGNhc2UgUHVyZUdl
dEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6
CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTksNiArMTk5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBE
ZWxldGVCeVZhbDoKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIEpfSklUT3BlcmF0
aW9uX0VTc2lKSSBnZXRCeUlkRnVuY3Rpb247CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6
R2V0KQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7
CisgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0KQorICAgICAgICBnZXRC
eUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwogICAgIGVsc2UKICAg
ICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCkBA
IC00MjY5LDYgKzQyNzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7Cisg
ICAgICAgIGNvbXBpbGVQdXJlR2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzksOCArMTc5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU8KICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAorICAgIGF1dG8gc2xvd1Bh
dGhGdW5jdGlvbiA9IHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplIDoKKyAgICAgICAgdHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0ID8gb3BlcmF0aW9u
UHVyZUdldEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKwogICAg
IGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgPyBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUgOiBvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUsCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgc2xvd1Bh
dGhGdW5jdGlvbiwKICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKICAgICAgICAgcmVzdWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQ
UiwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgCkBAIC00MjM1LDYgKzQy
MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAgICAgIGNvbXBp
bGVQdXJlR2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRCeUlkRmx1c2g6IHsKICAgICAgICAgaWYgKCFub2RlLT5wcmVkaWN0aW9uKCkpIHsKICAgICAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwg
SlNWYWx1ZVJlZ3MoKSwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MDMsNyArMTAwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE4K
IAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVy
ZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVt
cCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5v
dENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogCiAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwMzIsNiArMTAzMiw0MiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAgICAgfSAKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1cmVHZXRCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpOworCisgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVn
cywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9T
cGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdldCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVW50eXBlZFVz
ZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgCisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOworICAgIAorICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2Vs
bCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQpOworICAgIAorICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2RlKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MjEsNiArNzIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZURlbGV0ZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVUcnlHZXRCeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQ
dXJlR2V0QnlJZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW4oTm9kZSopOwogICAgIAogICAg
IHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRn
ZSBvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA4MDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MjMsNyArNjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3Ry
dWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgot
ICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAg
ICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpUcnlHZXQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0QnlJ
ZChBY2Nlc3NUeXBlOjpQdXJlR2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgpAQCAtMjc4OCw3ICsyNzkxLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGUgdHlw
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCB0eXBl
ID09IEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NU
eXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpUcnlHZXQgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpQdXJlR2V0KTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgewogICAgICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0yODE1LDYgKzI4MTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5j
dGlvbjsKICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkKICAgICAgICAg
ICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAg
ICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWM7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWM7CiAKQEAgLTg4MzgsNiArODg0Myw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3B0aW1pemF0aW9uRnVu
Y3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpH
ZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDM1IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwdXJlR2V0QnlJZENvbW1vbihW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBJZGVudGlmaWVyJik+JiBmdW5jdGlvbiA9IFtdIChjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBJZGVudGlmaWVyJikgeyB9KQoreworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlkKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShiYXNlKTsKKworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
ZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnQsIHNsb3QsIFsmXSAoYm9vbCwgUHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7Cisg
ICAgICAgIGJvb2wgd2lsbERvU2lkZUVmZmVjdHMgPSAhKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3Qu
aXNVbnNldCgpKSB8fCBzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CisgICAgICAgIGlm
IChVTkxJS0VMWSh3aWxsRG9TaWRlRWZmZWN0cykpIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGVjLT5jb2RlT3JpZ2luKCk7CisgICAg
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPSBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGV4ZWMtPmNvZGVCbG9j
aygpLT5hbHRlcm5hdGl2ZSgpKTsKKyAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbkJ5
dGVjb2RlSW5kZXggPSBDb2RlT3JpZ2luKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7IC8vIFNp
bmNlIHdlJ3JlIHNlYXJjaGluZyBpbiB0aGUgYmFzZWxpbmUsIHdlIGp1c3QgY2FyZSBhYm91dCBi
eXRlY29kZSBpbmRleC4KKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihjdXJyZW50QmFzZWxpbmUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViID0gY3VycmVudEJhc2VsaW5lLT5maW5kU3R1YkluZm8ob3JpZ2luQnl0
ZWNvZGVJbmRleCkpCisgICAgICAgICAgICAgICAgICAgIHN0dWItPmRpZFNpZGVFZmZlY3RzID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpl
dHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzKTsKKyAgICAg
ICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHVpZCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbihzbG90LCBpZGVudCk7CisgICAgICAgIHJldHVybiBzbG90LmlzVmFsdWUo
KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKKyAgICB9KSk7
Cit9CisKIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE2NSw2ICsxOTQs
MzggQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVy
biBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJl
dHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0s
IGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0s
IGV4ZWMsIGJhc2UsIHVpZCwgCisgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICAgICAgQVNTRVJUKChzbG90Lmlz
VmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKSk7CisgICAgICAgICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShi
YXNlKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7
CisgICAgICAgIH0pOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeUdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CkBAIC0xNzksNyArMjQwLDYgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRQdXJlUmVzdWx0KCkpOwogfQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwpAQCAtMjA3LDcgKzI2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVP
ck51bGwoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0Nh
Y2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNl
dCgpKSkKLSAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlE
KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRy
eSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsK
IH0KQEAgLTIyNiw3ICsyODYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZQogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIAogICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZh
bHVlLmNsYXNzSW5mb09yTnVsbCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgYm9vbCB3aWxsRG9TaWRl
RWZmZWN0cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNU
YWludGVkQnlPcGFxdWVPYmplY3QoKTsKKyAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0g
d2lsbERvU2lkZUVmZmVjdHM7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmlj
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKQEAgLTI1NSw2ICszMTgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdlCiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChi
b29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBib29s
IHdpbGxEb1NpZGVFZmZlY3RzID0gIShzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkg
fHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOworICAgICAgICBzdHViSW5mby0+ZGlk
U2lkZUVmZmVjdHMgfD0gd2lsbERvU2lkZUVmZmVjdHM7CisKICAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAg
ICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5m
bywgR2V0QnlJREtpbmQ6Ok5vcm1hbCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0
VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMw
LDYgKzMzMCw5IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJ
ZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJl
R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA4MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9n
ZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRl
eChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOwor
ICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjA4MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5
X2lkKEluc3RydWN0CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYg
KzEzNCwzMCBAQCBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxp
bmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5j
dGlvbihHZXRCeUlES2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpO
b3JtYWwpCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFs
OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5Ogor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0
QnlJREtpbmQ6OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGlt
aXplOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
IH0KIAogaW5saW5lIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRC
eUlkRnVuY3Rpb24oR2V0QnlJREtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBHZXRCeUlE
S2luZDo6Tm9ybWFsKQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJREtpbmQ6
Ok5vcm1hbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7Ci0gICAgcmV0dXJuIG9w
ZXJhdGlvblRyeUdldEJ5SWQ7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHVyZUdldEJ5SWQ7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVB
Y3Rpb24gdHJ5Q2FjaGVHZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8sIEdldEJ5SURLaW5kIGtpbmQpCkBAIC0yNzEs
NiArMjg1LDE2IEBAIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAg
ICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzQ2FzZTo6TG9hZDsKICAgICAgICAgICAgIGVsc2Ug
aWYgKHNsb3QuaXNVbnNldCgpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpN
aXNzOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisKKyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjp0cnlHZXQo
dm0sIGNvZGVCbG9jaywgdHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9h
ZFRhcmdldEZyb21Qcm94eSwgc2xvdC53YXRjaHBvaW50U2V0KCkpOworICAgICAgICB9IGVsc2Ug
aWYgKGtpbmQgPT0gR2V0QnlJREtpbmQ6OlRyeSkgeworICAgICAgICAgICAgQWNjZXNzQ2FzZTo6
QWNjZXNzVHlwZSB0eXBlOworICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgp
KQorICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpMb2FkOworICAgICAgICAgICAg
ZWxzZSBpZiAoc2xvdC5pc1Vuc2V0KCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nh
c2U6Ok1pc3M7CiAgICAgICAgICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkp
CiAgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6OkdldEdldHRlcjsKICAgICAgICAg
ICAgIGVsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAy
MDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRC
eUlES2luZCB7CiAgICAgTm9ybWFsLAorICAgIFRyeSwKICAgICBQdXJlCiB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0
dGlzb25SZWFzb24uY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU2LDYgKzU2LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpldAog
ICAgIGNhc2UgSmV0dGlzb25EdWVUb09TUkV4aXQ6CiAgICAgICAgIG91dC5wcmludCgiT1NSRXhp
dCIpOwogICAgICAgICByZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRF
ZmZlY3RzOgorICAgICAgICBvdXQucHJpbnQoIlB1cmVHZXRCeUlkRWZmZWN0cyIpOworICAgICAg
ICByZXR1cm47CiAgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50OgogICAg
ICAgICBvdXQucHJpbnQoIlByb2ZpbGVkV2F0Y2hwb2ludCIpOwogICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckpldHRpc29uUmVhc29uLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDcgQEAgZW51bSBKZXR0aXNvblJlYXNvbiB7CiAgICAgSmV0dGlzb25EdWVUb0Jh
c2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlciwKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxp
bmVMb29wUmVvcHRpbWl6YXRpb25UcmlnZ2VyT25PU1JFbnRyeUZhaWwsCiAgICAgSmV0dGlzb25E
dWVUb09TUkV4aXQsCisgICAgSmV0dGlzb25EdWVUb1B1cmVHZXRCeUlkRWZmZWN0cywKICAgICBK
ZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50LAogICAgIEpldHRpc29uRHVlVG9VbnByb2Zp
bGVkV2F0Y2hwb2ludCwKICAgICBKZXR0aXNvbkR1ZVRvT2xkQWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293319</attachid>
            <date>2016-10-29 17:07:16 -0700</date>
            <delta_ts>2016-10-29 17:08:26 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>44770</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgxMTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNzZS0yLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNzZS5qczogQWRkZWQu
CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29y
cmVjdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1vYmplY3QuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTYtMTAtMjggIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBTa2lwIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbnNlLXNldC5qcyBvbiBtZW1vcnkgbGltaXRlZCBkZXZpY2VzCkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2UtMi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2UtMi5qcwko
cmV2aXNpb24gMCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNz
ZS0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIGZvbyhvLCBj
KSB7CisgICAgaWYgKG8uZikgeworICAgICAgICBsZXQgc3VtID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBjOyBpKyspCisgICAgICAgICAgICBzdW0gKz0gby5mOworICAgICAgICBy
ZXR1cm4gc3VtOworICAgIH0KK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGFydCA9IERhdGUu
bm93KCk7CitsZXQgb2JqZWN0cyA9IFtdOworY29uc3Qgb2JqZWN0Q291bnQgPSAyMDsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7IGkrKykgeworICAgIGxldCBvYmogPSB7fTsKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHsKKyAgICAgICAgb2JqWyJqIiArIGpd
ID0gajsKKyAgICB9CisgICAgb2JqLmYgPSAyMDsKKyAgICBvYmplY3RzLnB1c2gob2JqKTsKK30K
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKKyAgICBsZXQgb2JqID0gb2Jq
ZWN0c1tpICUgb2JqZWN0cy5sZW5ndGhdOworICAgIGZvbyhvYmosIDE1MCk7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2Uu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLmpzCShyZXZpc2lvbiAwKQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKK2Z1bmN0aW9uIGZv
byhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8uZiArIG8uZiArIG8uZiArIG8u
ZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBEYXRlLm5vdygpOworbGV0IG9i
amVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citmb3IgKGxldCBpID0gMDsgaSA8
IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307CisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIgKyBqXSA9IGo7CisgICAgfQor
ICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7Cit9CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmpl
Y3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0IHZlcmJvc2UgPSBmYWxzZTsK
K2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29ycmVjdG5lc3MuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNvcnJlY3RuZXNzLmpzCShyZXZp
c2lvbiAwKQorKysgSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNvcnJlY3RuZXNz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7
CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKQor
fQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24gZm9vKG8xLCBvMikgeworICAgIGxldCBh
ID0gbzEuZjE7CisgICAgbGV0IGIgPSBvMi5mMjsKKyAgICByZXR1cm4gYSArIG8xLmYxICsgYjsK
K30KK25vSW5saW5lKGZvbyk7CisKK2xldCBvYmpzID0gW107Citjb25zdCBjb3VudCA9IDgwOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikgeworICAgICAgICBvW2ogKyAiSiJdID0gajsKKyAg
ICB9CisgICAgby5mMSA9IDIwOworICAgIG8uZjIgPSA0MDsKKyAgICBvYmpzLnB1c2gobyk7Cit9
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgbGV0IG8xID0gb2Jqc1tp
ICUgb2Jqcy5sZW5ndGhdOworICAgIGxldCBvMiA9IG9ianNbKGkgKyAxKSAlIG9ianMubGVuZ3Ro
XTsKKyAgICBhc3NlcnQoZm9vKG8xLCBvMikgPT09IDgwKTsKK30KKworbGV0IG8gPSBvYmpzW2Nv
dW50IC0gMV07CitsZXQgbnVtQ2FsbHMgPSAwOworT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sICJm
MSIsIHsKKyAgICBnZXQoKSB7ICsrbnVtQ2FsbHM7IHJldHVybiAyNTsgfQorfSk7CisKK2Fzc2Vy
dChmb28obywgb2Jqc1tjb3VudCAtIDJdKSA9PT0gOTApOworYXNzZXJ0KG51bUNhbGxzID09PSAy
KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1vYmplY3QuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtb24tbm9uLW9iamVj
dC5qcwkocmV2aXNpb24gMCkKKysrIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbi4iKQorfQorCitmdW5jdGlvbiBmb28obykgeworICAgIGFzc2VydChvLmxlbmd0aCA9PT0g
by5sZW5ndGgpOworICAgIHJldHVybiBvLmxlbmd0aDsKK30KK25vSW5saW5lKGZvbyk7CisKK2xl
dCBpdGVtcyA9IFtdOworY29uc3QgbnVtSXRlbXMgPSAzMDsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
bnVtSXRlbXM7IGkrKykgeworICAgIGxldCBvID0ge307CisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCBpOyBqKyspIHsKKyAgICAgICAgb1tqICsgImoiXSA9IGo7CisgICAgfQorICAgIG8ubGVuZ3Ro
ID0gMjsKKyAgICBpdGVtcy5wdXNoKG8pOworfSAKKworaXRlbXMucHVzaCgic3QiKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGFzc2VydChmb28oaXRlbXNbaSAlIGl0
ZW1zLmxlbmd0aF0pID09PSAyKTsKKworTnVtYmVyLnByb3RvdHlwZS5sZW5ndGggPSAyOworaXRl
bXMucHVzaCg0Mik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspCisgICAgYXNz
ZXJ0KGZvbyhpdGVtc1tpICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisyMDE2LTEwLTI5ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZl
IGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEgZ2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQg
YSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGgg
TWlsbGVyLgorCisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBHZXRCeUlkIG5vZGUgaW4gdGhl
IERGRyBjYWxsZWQgUHVyZUdldEJ5SWQuIFdlIGVtaXQgYQorICAgICAgICBQdXJlR2V0QnlJZCB3
aGVuIHdlIHByb2ZpbGUgdGhhdCBhIGdldF9ieV9pZCBpbiB0aGUgYmFzZWxpbmUgbmV2ZXIgZG9l
cworICAgICAgICBzaWRlIGVmZmVjdHMuIFB1cmVHZXRCeUlkIHNwZWN1bGF0ZXMgb24gdGhlIGZh
Y3QgdGhhdCBpdCB3b24ndCBkbyBzaWRlCisgICAgICAgIGVmZmVjdHMuIElmIGl0IHJlYWxpemVz
IHRoYXQgaXQgbXVzdCBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaXQgd2lsbCBwZXJmb3JtCisgICAg
ICAgIHRoZSBzaWRlIGVmZmVjdCwgYnV0IGFsc28gaW52YWxpZGF0ZSB0aGUgQ29kZUJsb2NrIHRo
YXQgY29tcGlsZWQgaXQsCisgICAgICAgIHdoaWNoIHdpbGwgY2F1c2UgdXMgdG8gZXhpdCBvbmNl
IHdlIHJldHVybiBiYWNrIHRvIHRoZSBjb21waWxlZCBjb2RlLgorICAgICAgICBUaGlzIGFsbG93
cyB1cyB0byBoYXZlIHN0cmljdGVyIGNsb2JiZXJpemUgcnVsZXMgZm9yIFB1cmVHZXRCeUlkIHdo
aWNoCisgICAgICAgIG1vZGVsIGhvdyBnZXRPd25Qcm9wZXJ0eVNsb3QoVk1JbnF1aXJ5KSBiZWhh
dmVzLiBUaGlzIG1lYW5zIHRoYXQgUHVyZUdldEJ5SWRzCisgICAgICAgIGNhbiBiZSBDU0VkIHdp
dGggZWFjaCBvdGhlciwgYW5kIHRoYXQgb3RoZXIgdGhpbmdzIGFyZSBtb3JlIGxpa2VseSB0bwor
ICAgICAgICBiZSBDU0VkIGFyb3VuZCBhIFB1cmVHZXRCeUlkLiBUbyBwcm9maWxlIGlmIGEgZ2V0
X2J5X2lkIGRvZXMgc2lkZQorICAgICAgICBlZmZlY3RzLCBJJ3ZlIGFkZGVkIGFuIGV4dHJhIGJp
dCBpbnRvIFN0cnVjdHVyZVN0dWJJbmZvIHRoYXQgd2Ugd3JpdGUKKyAgICAgICAgdG8gd2hlbiBw
ZXJmb3JtaW5nIGEgZ2V0X2J5X2lkIHNsb3cgcGF0aCBjYWxsLiBJZiB3ZSBub3RpY2UgdGhhdCB3
ZQorICAgICAgICBuZXZlciBkbyBlZmZlY3RzLCBpbnNpZGUgdGhlIEJ5dGVDb2RlUGFyc2VyLCB3
ZSB3aWxsIGVtaXQgYSBQdXJlR2V0QnlJZAorICAgICAgICBpbnN0ZWFkIG9mIGEgR2V0QnlJZC4K
KworICAgICAgICBUbyBqdXN0aWZ5IHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0IG9mIHRoaXMgcGF0
Y2gsIEkgcmFuIHRoZSBzdWl0ZSBvZgorICAgICAgICBiZW5jaG1hcmtzIHdpdGggdXNlQWNjZXNz
SW5saW5pbmc9ZmFsc2UuIFRoaXMgbWVhbnQgdGhhdCB3ZSBkb24ndCBjb21waWxlCisgICAgICAg
IGFueSAoTXVsdGkpR2V0QnlPZmZzZXQvKE11bHRpKVB1dEJ5T2Zmc2V0LiBUaGlzIHdhcyBqdXN0
IHRvIHRyeSB0byBzZWUgaWYKKyAgICAgICAgdGhpcyBwYXRjaCBpcyB3b3J0aCBhbnl0aGluZyBh
dCBhbGwgaW4gYSB3b3JsZCB3aGVyZSB3ZSBlbWl0IG1hbnkKKyAgICAgICAgUHVyZUdldEJ5SWRz
LiBSdW5uaW5nIHRoZSBiZW5jaG1hcmtzIHVuZGVyIHRoaXMgbW9kZSBzaG93ZWQgYSAzLjUlIG9j
dGFuZQorICAgICAgICBpbXByb3ZlbWVudCBhbmQgYSAxNSUga3Jha2VuIGltcHJvdmVtZW50LiBI
b3dldmVyLCB3aGVuIHJ1bm5pbmcgYmVuY2htYXJrcworICAgICAgICB3aXRoIHVzZUFjY2Vzc0lu
bGluaW5nPXRydWUgKHRoZSBkZWZhdWx0IEpTQyBzdGF0ZSksIHRoaXMgcGF0Y2ggaXMgbmV1dHJh
bC4KKyAgICAgICAgSSB0aGluayB0aGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGUg
REZHIGlzIGdvb2QgYXQga25vd2luZyB3aGVuIHRvCisgICAgICAgIGVtaXQgKE11bHRpKUdldEJ5
T2Zmc2V0LCBhbmQgbW9zdCBiZW5jaG1hcmtzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tCisgICAg
ICAgIFB1cmVHZXRCeUlkIGFyZSBhbHJlYWR5IGVtaXR0aW5nIChNdWx0aSlHZXRCeU9mZnNldC4g
SG93ZXZlciwgUHVyZUdldEJ5SWQgY2FuIGJlCisgICAgICAgIHByb2ZpdGFibGUgd2hlbiB3ZSBl
bmNvdW50ZXIgY29kZSB0aGF0IGlzIHRvbyBwb2x5bW9ycGhpYyBmb3IgKE11bHRpKUdldEJ5T2Zm
c2V0LgorICAgICAgICBJdCdzIHJlYXNvbmFibGUgdG8gZXhwZWN0IHRoYXQgSlMgY29kZSBpbiB0
aGUgd2lsZCB3aWxsIGZhbGwgaW50byB0aGlzIHVzZQorICAgICAgICBjYXNlIGV2ZW4gdGhvdWdo
IGl0IG1pZ2h0IG5vdCBiZSByZXByZXNlbnRlZCBpbiBzb21lIG9mIHRoZSBtYWpvciBKUyBiZW5j
aG1hcmtzLgorICAgICAgICBJIHdyb3RlIHNvbWUgbWljcm9iZW5jaG1hcmtzIHRvIGRlbW9uc3Ry
YXRlIHRoZSBiZW5lZml0cyBvZiBQdXJlR2V0QnlJZCBDU0UsCisgICAgICAgIGFuZCB0aGV5IHdl
cmUgMzAlIChlbGltaW5hdGluZyBhIGZldyBQdXJlR2V0QnlJZCBmcm9tIGFuIGFkZCBleHByZXNz
aW9uKQorICAgICAgICB0byAxMHggZmFzdGVyIChlbGltaW5hdGluZyBhIFB1cmVHZXRCeUlkIGlu
IGEgbG9vcCkuCisKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1v
ZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbkJlY29tZUdldEFycmF5TGVuZ3RoKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0QnlPZmZzZXQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVyZUdldEJ5SWQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXJlR2V0QnlJ
ZENvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dl
dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGppdC9SZXBhdGNo
Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0
dGlzb25SZWFzb24uaDoKKwogMjAxNi0xMC0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJyZWFrcG9pbnRzIG5vdCB3b3Jr
aW5nIGluIHNjcmlwdHMgd2l0aCB1bmljb2RlIGNoYXJhY3RlcnMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2
aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBTdHJ1Y3R1cmVT
dHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCByZXNldEJ5R0MoZmFsc2UpCiAg
ICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29uc2lkZXJlZChmYWxzZSkKKyAg
ICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0yMTYsNyArMjE3LDEwIEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoKICAgICB9CiAKICAgICBzd2l0
Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFB1cmU6CisgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpUcnlHZXQ6CisgICAgICAgIHJlc2V0R2V0QnlJRChjb2RlQmxvY2ssICp0
aGlzLCBHZXRCeUlES2luZDo6VHJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpQdXJlR2V0OgogICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0
QnlJREtpbmQ6OlB1cmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYs
OCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzczsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDog
aW50OF90IHsKICAgICBHZXQsCi0gICAgR2V0UHVyZSwKKyAgICBUcnlHZXQsCisgICAgUHVyZUdl
dCwKICAgICBQdXQsCiAgICAgSW4KIH07CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgcmVzZXRCeUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9v
bCBldmVyQ29uc2lkZXJlZCA6IDE7CisgICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9Owog
CiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0
dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAko
cmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAg
ICAgICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNs
b2JiZXJMaW1pdCk7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlkKQorICAg
ICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxp
bWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVh
azsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFycmF5TW9k
ZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2FuQmVjb21l
R2V0QXJyYXlMZW5ndGgoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogewotICAgIGlmIChub2Rl
LT5vcCgpICE9IEdldEJ5SWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHVpZCA9
IGdyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICByZXR1
cm4gdWlkID09IGdyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsKKyAgICBp
ZiAobm9kZS0+b3AoKSA9PSBHZXRCeUlkIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpIHsK
KyAgICAgICAgYXV0byB1aWQgPSBncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKV07CisgICAgICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGguaW1wbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFycmF5TW9k
ZSBBcnJheU1vZGU6OnJlZmluZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMwNywxMCArMzMwNywxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09IEFjY2Vz
c1R5cGU6OkdldCkKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKICAgICAgICAgZ2V0QnlJZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJ
ZEZsdXNoIDogR2V0QnlJZDsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6VHJ5R2V0OgogICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXJlR2V0OgorICAgICAgICBnZXRCeUlkID0g
UHVyZUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgLy8gU3BlY2lhbCBwYXRoIGZv
ciBjdXN0b20gYWNjZXNzb3JzIHNpbmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBoYXZlIGFu
eSBtZWFuaW5ncy4KICAgICAvLyBTbywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9t
IFNpbXBsZSBvbmUuIEJ1dCB3ZSBoYXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdoZW4gd2Ug
dXNlIERPTUpJVC4KQEAgLTQxOTgsNyArNDIwNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAg
Tm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5SWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworICAgICAgICAg
ICAgYm9vbCBjb21waWxlQXNQdXJlR2V0QnlJZCA9IGZhbHNlOwogICAgICAgICAgICAgR2V0QnlJ
ZFN0YXR1cyBnZXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IDA7CiAgICAgICAgICAgICB7CkBAIC00MjA3LDcgKzQyMTcsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBi
eVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwg
dGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAm
JiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aCAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkSWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBjb21waWxl
ZEFzR2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVBc0dldEJ5SWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb21waWxlQXNQdXJlR2V0QnlJZCA9ICFieVZh
bEluZm8tPnN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0czsKICAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJbmZvLT5j
YWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCkBAIC00MjI1
LDkgKzQyMzYsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbXBp
bGVkQXNHZXRCeUlkKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwg
Z2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0LCBPUENPREVfTEVOR1RIKG9wX2dldF9ieV92
YWwpKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBpbGVBc0dldEJ5
SWQpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBjb21waWxlQXNQdXJlR2V0
QnlJZCA/IEFjY2Vzc1R5cGU6OlB1cmVHZXQgOiBBY2Nlc3NUeXBlOjpHZXQ7CisgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVk
aWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBlLCBPUENP
REVfTEVOR1RIKG9wX2dldF9ieV92YWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBO
b2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNX
b3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBHZXRCeVZhbCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYg
aXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSBpdCBnZW5l
cmljLgpAQCAtNDM2Myw3ICs0Mzc1LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gb3BfdHJ5X2dl
dF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6OkdldFB1cmUgOiBBY2Nlc3NUeXBlOjpH
ZXQ7CisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5
cGU6OlRyeUdldDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9s
b2NrKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3VycmVudENv
ZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBpbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8tPmV2ZXJD
b25zaWRlcmVkICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IEFjY2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90cnlfZ2V0
X2J5X2lkID8gT1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9MRU5HVEgo
b3BfZ2V0X2J5X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNiArNDk1LDM1IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVHZXRCeUlk
OiB7CisgICAgICAgIC8vIFdlIG1vZGVsIHdoYXQgaXMgYWxsb3dlZCBpbnNpZGUgYSBnZXRPd25Q
cm9wZXJ0eVNsb3QoVk1JbnF1aXJ5KSBoZXJlLgorICAgICAgICAvLyBTb21lIGdldE93blByb3Bl
cnR5U2xvdCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBsYXppbHkgaW5qZWN0IHByb3BlcnRpZXMsIHdo
aWNoCisgICAgICAgIC8vIG1heSBjaGFuZ2UgdGhlIG9iamVjdCdzIHN0cnVjdHVyZS4KKworICAg
ICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJ
bmZvRmxhZ3MpOworICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBy
ZWFkKEpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZs
eSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisKKyAgICAgICAgQWJzdHJhY3RIZWFwIHBy
b3BlcnR5TmFtZUhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
OworICAgICAgICByZWFkKHByb3BlcnR5TmFtZUhlYXApOworCisgICAgICAgIHdyaXRlKEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKKwor
ICAgICAgICB3cml0ZShXYXRjaHBvaW50X2ZpcmUpOworICAgICAgICB3cml0ZShNaXNjRmllbGRz
KTsKKworICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgbGF6aWx5IGFkZGluZyBmaWVsZHMg
dG8gYW4gb2JqZWN0IGhhcHBlbnMgaW4gZ2V0T3duUHJvcGVydHlTbG90CisgICAgICAgIC8vIGFu
ZCB3ZSBuZWVkIHRvIGFsbG9jYXRlIG91dCBvZiBsaW5lIHN0b3JhZ2UuCisgICAgICAgIHdyaXRl
KEpTT2JqZWN0X2J1dHRlcmZseSk7CisKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFBy
b3BlcnR5TG9jLCBwcm9wZXJ0eU5hbWVIZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDYgKzQ0OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgRWRn
ZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKQEAgLTQ1OSw2ICs0NjAsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
ICAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRo
ZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KIAorICAgICAg
ICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBpZiAoYmFzZVZhbHVlLm1fc3RydWN0
dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzQ2xvYmJlcmVkKCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
IHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTE0LDYgKzUxOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBu
b2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVh
ZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9s
ZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFs
dWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6IC8vIFdlIGFyZSBtb2Rl
bGluZyBnZXRPd25Qcm9wZXJ0eVNsb3QgaGVyZSwgd2hpY2ggbWF5IEdDIGJlY2F1c2UgaXQgaXMg
YWxsb3dlZCB0byBhbGxvY2F0ZSB0aGluZ3MuCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgog
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNv
ZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRh
LCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09
IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zm
c2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRG
bHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7
CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShz
dG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNTQyLDcgKzU0
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQo
TXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9
PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5k
KENlbGxVc2UpOwogICAgICAgICBtX29wID0gTXVsdGlHZXRCeU9mZnNldDsKQEAgLTkxOCw2ICs5
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFRy
eUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJ
ZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CkBAIC0xNDI4LDYgKzE0MjksNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgogICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAg
ICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2Rl
UmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXJlR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgyLDYgKzY4Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNl
OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CisgICAgICAgIGNhc2UgUHVyZUdl
dEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6
CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTksNiArMTk5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBE
ZWxldGVCeVZhbDoKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIEpfSklUT3BlcmF0
aW9uX0VTc2lKSSBnZXRCeUlkRnVuY3Rpb247CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6
R2V0KQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7
CisgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0KQorICAgICAgICBnZXRC
eUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwogICAgIGVsc2UKICAg
ICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCkBA
IC00MjY5LDYgKzQyNzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7Cisg
ICAgICAgIGNvbXBpbGVQdXJlR2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzksOCArMTc5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU8KICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAorICAgIGF1dG8gc2xvd1Bh
dGhGdW5jdGlvbiA9IHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplIDoKKyAgICAgICAgdHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0ID8gb3BlcmF0aW9u
UHVyZUdldEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKwogICAg
IGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgPyBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUgOiBvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUsCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgc2xvd1Bh
dGhGdW5jdGlvbiwKICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKICAgICAgICAgcmVzdWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQ
UiwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgCkBAIC00MjM1LDYgKzQy
MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAgICAgIGNvbXBp
bGVQdXJlR2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRCeUlkRmx1c2g6IHsKICAgICAgICAgaWYgKCFub2RlLT5wcmVkaWN0aW9uKCkpIHsKICAgICAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwg
SlNWYWx1ZVJlZ3MoKSwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MDMsNyArMTAwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE4K
IAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVy
ZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVt
cCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5v
dENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogCiAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwMzIsNiArMTAzMiw0MiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAgICAgfSAKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1cmVHZXRCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpOworCisgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVn
cywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9T
cGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdldCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVW50eXBlZFVz
ZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgCisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOworICAgIAorICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2Vs
bCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQpOworICAgIAorICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2RlKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MjEsNiArNzIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZURlbGV0ZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVUcnlHZXRCeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQ
dXJlR2V0QnlJZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW4oTm9kZSopOwogICAgIAogICAg
IHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRn
ZSBvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA4MDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MjMsNyArNjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3Ry
dWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgot
ICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAg
ICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpUcnlHZXQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0QnlJ
ZChBY2Nlc3NUeXBlOjpQdXJlR2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgpAQCAtMjc4OCw3ICsyNzkxLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGUgdHlw
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCB0eXBl
ID09IEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NU
eXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpUcnlHZXQgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpQdXJlR2V0KTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgewogICAgICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0yODE1LDYgKzI4MTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5j
dGlvbjsKICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkKICAgICAgICAg
ICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAg
ICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWM7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWM7CiAKQEAgLTg4MzgsNiArODg0Myw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3B0aW1pemF0aW9uRnVu
Y3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpH
ZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDM1IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwdXJlR2V0QnlJZENvbW1vbihW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBJZGVudGlmaWVyJik+JiBmdW5jdGlvbiA9IFtdIChjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBJZGVudGlmaWVyJikgeyB9KQoreworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlkKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShiYXNlKTsKKworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
ZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnQsIHNsb3QsIFsmXSAoYm9vbCwgUHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7Cisg
ICAgICAgIGJvb2wgd2lsbERvU2lkZUVmZmVjdHMgPSAhKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3Qu
aXNVbnNldCgpKSB8fCBzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CisgICAgICAgIGlm
IChVTkxJS0VMWSh3aWxsRG9TaWRlRWZmZWN0cykpIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGVjLT5jb2RlT3JpZ2luKCk7CisgICAg
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPSBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGV4ZWMtPmNvZGVCbG9j
aygpLT5hbHRlcm5hdGl2ZSgpKTsKKyAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbkJ5
dGVjb2RlSW5kZXggPSBDb2RlT3JpZ2luKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7IC8vIFNp
bmNlIHdlJ3JlIHNlYXJjaGluZyBpbiB0aGUgYmFzZWxpbmUsIHdlIGp1c3QgY2FyZSBhYm91dCBi
eXRlY29kZSBpbmRleC4KKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihjdXJyZW50QmFzZWxpbmUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViID0gY3VycmVudEJhc2VsaW5lLT5maW5kU3R1YkluZm8ob3JpZ2luQnl0
ZWNvZGVJbmRleCkpCisgICAgICAgICAgICAgICAgICAgIHN0dWItPmRpZFNpZGVFZmZlY3RzID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpl
dHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzKTsKKyAgICAg
ICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHVpZCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbihzbG90LCBpZGVudCk7CisgICAgICAgIHJldHVybiBzbG90LmlzVmFsdWUo
KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKKyAgICB9KSk7
Cit9CisKIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE2NSw2ICsxOTQs
MzggQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVy
biBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJl
dHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0s
IGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0s
IGV4ZWMsIGJhc2UsIHVpZCwgCisgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICAgICAgQVNTRVJUKChzbG90Lmlz
VmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKSk7CisgICAgICAgICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShi
YXNlKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7
CisgICAgICAgIH0pOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeUdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CkBAIC0xNzksNyArMjQwLDYgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRQdXJlUmVzdWx0KCkpOwogfQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwpAQCAtMjA3LDcgKzI2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVP
ck51bGwoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0Nh
Y2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNl
dCgpKSkKLSAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlE
KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRy
eSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsK
IH0KQEAgLTIyNiw3ICsyODYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZQogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIAogICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZh
bHVlLmNsYXNzSW5mb09yTnVsbCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgYm9vbCB3aWxsRG9TaWRl
RWZmZWN0cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNU
YWludGVkQnlPcGFxdWVPYmplY3QoKTsKKyAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0g
d2lsbERvU2lkZUVmZmVjdHM7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmlj
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKQEAgLTI1NSw2ICszMTgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdlCiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChi
b29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBib29s
IHdpbGxEb1NpZGVFZmZlY3RzID0gIShzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkg
fHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOworICAgICAgICBzdHViSW5mby0+ZGlk
U2lkZUVmZmVjdHMgfD0gd2lsbERvU2lkZUVmZmVjdHM7CisKICAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAg
ICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5m
bywgR2V0QnlJREtpbmQ6Ok5vcm1hbCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0
VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMw
LDYgKzMzMCw5IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJ
ZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJl
R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA4MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9n
ZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRl
eChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOwor
ICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjA4MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5
X2lkKEluc3RydWN0CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYg
KzEzNCwzMiBAQCBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxp
bmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5j
dGlvbihHZXRCeUlES2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpO
b3JtYWwpCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFs
OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5Ogor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0
QnlJREtpbmQ6OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGlt
aXplOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
IH0KIAogaW5saW5lIEpfSklUT3BlcmF0aW9uX0VTc2lKSSBhcHByb3ByaWF0ZUdlbmVyaWNHZXRC
eUlkRnVuY3Rpb24oR2V0QnlJREtpbmQga2luZCkKIHsKLSAgICBpZiAoa2luZCA9PSBHZXRCeUlE
S2luZDo6Tm9ybWFsKQorICAgIHN3aXRjaCAoa2luZCkgeworICAgIGNhc2UgR2V0QnlJREtpbmQ6
Ok5vcm1hbDoKICAgICAgICAgcmV0dXJuIG9wZXJhdGlvbkdldEJ5SWQ7Ci0gICAgcmV0dXJuIG9w
ZXJhdGlvblRyeUdldEJ5SWQ7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5OgorICAgICAgICBy
ZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpQdXJlOgor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uUHVyZUdldEJ5SWQ7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBv
cGVyYXRpb25HZXRCeUlkOwogfQogCiBzdGF0aWMgSW5saW5lQ2FjaGVBY3Rpb24gdHJ5Q2FjaGVH
ZXRCeUlEKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90LCBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8sIEdldEJ5SURLaW5kIGtpbmQpCkBAIC0yNzEsNiArMjg3LDE2IEBAIHN0
YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQKICAgICAgICAgICAgICAgICB0
eXBlID0gQWNjZXNzQ2FzZTo6TG9hZDsKICAgICAgICAgICAgIGVsc2UgaWYgKHNsb3QuaXNVbnNl
dCgpKQogICAgICAgICAgICAgICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpNaXNzOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisK
KyAgICAgICAgICAgIG5ld0Nhc2UgPSBBY2Nlc3NDYXNlOjp0cnlHZXQodm0sIGNvZGVCbG9jaywg
dHlwZSwgb2Zmc2V0LCBzdHJ1Y3R1cmUsIGNvbmRpdGlvblNldCwgbG9hZFRhcmdldEZyb21Qcm94
eSwgc2xvdC53YXRjaHBvaW50U2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gR2V0
QnlJREtpbmQ6OlRyeSkgeworICAgICAgICAgICAgQWNjZXNzQ2FzZTo6QWNjZXNzVHlwZSB0eXBl
OworICAgICAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpKQorICAgICAgICAgICAg
ICAgIHR5cGUgPSBBY2Nlc3NDYXNlOjpMb2FkOworICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC5p
c1Vuc2V0KCkpCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6Ok1pc3M7CiAgICAg
ICAgICAgICBlbHNlIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCiAgICAgICAgICAgICAg
ICAgdHlwZSA9IEFjY2Vzc0Nhc2U6OkdldEdldHRlcjsKICAgICAgICAgICAgIGVsc2UKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiAr
MzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBjbGFzcyBHZXRCeUlES2luZCB7CiAgICAg
Tm9ybWFsLAorICAgIFRyeSwKICAgICBQdXJlCiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uY3Bw
CShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJv
ZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkgQEAg
dm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpldAogICAgIGNhc2UgSmV0dGlz
b25EdWVUb09TUkV4aXQ6CiAgICAgICAgIG91dC5wcmludCgiT1NSRXhpdCIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzOgorICAgICAg
ICBvdXQucHJpbnQoIlB1cmVHZXRCeUlkRWZmZWN0cyIpOworICAgICAgICByZXR1cm47CiAgICAg
Y2FzZSBKZXR0aXNvbkR1ZVRvUHJvZmlsZWRXYXRjaHBvaW50OgogICAgICAgICBvdXQucHJpbnQo
IlByb2ZpbGVkV2F0Y2hwb2ludCIpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29u
LmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckpldHRpc29uUmVhc29uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAg
ZW51bSBKZXR0aXNvblJlYXNvbiB7CiAgICAgSmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0
aW1pemF0aW9uVHJpZ2dlciwKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6
YXRpb25UcmlnZ2VyT25PU1JFbnRyeUZhaWwsCiAgICAgSmV0dGlzb25EdWVUb09TUkV4aXQsCisg
ICAgSmV0dGlzb25EdWVUb1B1cmVHZXRCeUlkRWZmZWN0cywKICAgICBKZXR0aXNvbkR1ZVRvUHJv
ZmlsZWRXYXRjaHBvaW50LAogICAgIEpldHRpc29uRHVlVG9VbnByb2ZpbGVkV2F0Y2hwb2ludCwK
ICAgICBKZXR0aXNvbkR1ZVRvT2xkQWdlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>293320</attachid>
            <date>2016-10-29 17:08:26 -0700</date>
            <delta_ts>2016-10-29 18:41:16 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>44820</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDgxMTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIxIEBACisyMDE2LTEwLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEg
Z2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQgYSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZU
TAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGggTWlsbGVyLgorCisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNzZS0yLmpzOiBBZGRlZC4KKyAgICAgICAgKGZvbyk6
CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNzZS5qczogQWRkZWQu
CisgICAgICAgIChmb28pOgorICAgICAgICAqIHN0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29y
cmVjdG5lc3MuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6Cisg
ICAgICAgICogc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1vYmplY3QuanM6IEFkZGVkLgor
ICAgICAgICAoYXNzZXJ0KToKKyAgICAgICAgKGZvbyk6CisKIDIwMTYtMTAtMjggIENzYWJhIE9z
enRyb2dvbsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBTa2lwIEpTVGVzdHMvbWlj
cm9iZW5jaG1hcmtzL2RlbnNlLXNldC5qcyBvbiBtZW1vcnkgbGltaXRlZCBkZXZpY2VzCkluZGV4
OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2UtMi5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2UtMi5qcwko
cmV2aXNpb24gMCkKKysrIEpTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3B1cmUtZ2V0LWJ5LWlkLWNz
ZS0yLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAKK2Z1bmN0aW9uIGZvbyhvLCBj
KSB7CisgICAgaWYgKG8uZikgeworICAgICAgICBsZXQgc3VtID0gMDsKKyAgICAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCBjOyBpKyspCisgICAgICAgICAgICBzdW0gKz0gby5mOworICAgICAgICBy
ZXR1cm4gc3VtOworICAgIH0KK30KK25vSW5saW5lKGZvbyk7CisKK2xldCBzdGFydCA9IERhdGUu
bm93KCk7CitsZXQgb2JqZWN0cyA9IFtdOworY29uc3Qgb2JqZWN0Q291bnQgPSAyMDsKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgb2JqZWN0Q291bnQ7IGkrKykgeworICAgIGxldCBvYmogPSB7fTsKKyAg
ICBmb3IgKGxldCBqID0gMDsgaiA8IGkgKiAyOyBqKyspIHsKKyAgICAgICAgb2JqWyJqIiArIGpd
ID0gajsKKyAgICB9CisgICAgb2JqLmYgPSAyMDsKKyAgICBvYmplY3RzLnB1c2gob2JqKTsKK30K
KworZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyBpKyspIHsKKyAgICBsZXQgb2JqID0gb2Jq
ZWN0c1tpICUgb2JqZWN0cy5sZW5ndGhdOworICAgIGZvbyhvYmosIDE1MCk7Cit9CisKK2NvbnN0
IHZlcmJvc2UgPSBmYWxzZTsKK2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBz
dGFydCk7CkluZGV4OiBKU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wdXJlLWdldC1ieS1pZC1jc2Uu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQtYnktaWQt
Y3NlLmpzCShyZXZpc2lvbiAwKQorKysgSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHVyZS1nZXQt
YnktaWQtY3NlLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjYgQEAKK2Z1bmN0aW9uIGZv
byhvKSB7CisgICAgaWYgKG8uZikKKyAgICAgICAgcmV0dXJuIG8uZiArIG8uZiArIG8uZiArIG8u
ZjsgCit9Citub0lubGluZShmb28pOworCitsZXQgc3RhcnQgPSBEYXRlLm5vdygpOworbGV0IG9i
amVjdHMgPSBbXTsKK2NvbnN0IG9iamVjdENvdW50ID0gMjA7Citmb3IgKGxldCBpID0gMDsgaSA8
IG9iamVjdENvdW50OyBpKyspIHsKKyAgICBsZXQgb2JqID0ge307CisgICAgZm9yIChsZXQgaiA9
IDA7IGogPCBpICogMjsgaisrKSB7CisgICAgICAgIG9ialsiaiIgKyBqXSA9IGo7CisgICAgfQor
ICAgIG9iai5mID0gMjA7CisgICAgb2JqZWN0cy5wdXNoKG9iaik7Cit9CisKK2ZvciAobGV0IGkg
PSAwOyBpIDwgMTAwMDAwMDA7IGkrKykgeworICAgIGxldCBvYmogPSBvYmplY3RzW2kgJSBvYmpl
Y3RzLmxlbmd0aF07CisgICAgZm9vKG9iaik7Cit9CisKK2NvbnN0IHZlcmJvc2UgPSBmYWxzZTsK
K2lmICh2ZXJib3NlKQorICAgIHByaW50KERhdGUubm93KCkgLSBzdGFydCk7CkluZGV4OiBKU1Rl
c3RzL3N0cmVzcy9wdXJlLWdldC1ieS1pZC1jc2UtY29ycmVjdG5lc3MuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNvcnJlY3RuZXNzLmpzCShyZXZp
c2lvbiAwKQorKysgSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtY3NlLWNvcnJlY3RuZXNz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzkgQEAKK2Z1bmN0aW9uIGFzc2VydChiKSB7
CisgICAgaWYgKCFiKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkJhZCBhc3NlcnRpb24iKQor
fQorbm9JbmxpbmUoYXNzZXJ0KTsKKworZnVuY3Rpb24gZm9vKG8xLCBvMikgeworICAgIGxldCBh
ID0gbzEuZjE7CisgICAgbGV0IGIgPSBvMi5mMjsKKyAgICByZXR1cm4gYSArIG8xLmYxICsgYjsK
K30KK25vSW5saW5lKGZvbyk7CisKK2xldCBvYmpzID0gW107Citjb25zdCBjb3VudCA9IDgwOwor
Zm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgbGV0IG8gPSB7fTsKKyAgICBm
b3IgKGxldCBqID0gMDsgaiA8IGk7ICsraikgeworICAgICAgICBvW2ogKyAiSiJdID0gajsKKyAg
ICB9CisgICAgby5mMSA9IDIwOworICAgIG8uZjIgPSA0MDsKKyAgICBvYmpzLnB1c2gobyk7Cit9
CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDsgaSsrKSB7CisgICAgbGV0IG8xID0gb2Jqc1tp
ICUgb2Jqcy5sZW5ndGhdOworICAgIGxldCBvMiA9IG9ianNbKGkgKyAxKSAlIG9ianMubGVuZ3Ro
XTsKKyAgICBhc3NlcnQoZm9vKG8xLCBvMikgPT09IDgwKTsKK30KKworbGV0IG8gPSBvYmpzW2Nv
dW50IC0gMV07CitsZXQgbnVtQ2FsbHMgPSAwOworT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sICJm
MSIsIHsKKyAgICBnZXQoKSB7ICsrbnVtQ2FsbHM7IHJldHVybiAyNTsgfQorfSk7CisKK2Fzc2Vy
dChmb28obywgb2Jqc1tjb3VudCAtIDJdKSA9PT0gOTApOworYXNzZXJ0KG51bUNhbGxzID09PSAy
KTsKSW5kZXg6IEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5vbi1vYmplY3QuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvcHVyZS1nZXQtYnktaWQtb24tbm9uLW9iamVj
dC5qcwkocmV2aXNpb24gMCkKKysrIEpTVGVzdHMvc3RyZXNzL3B1cmUtZ2V0LWJ5LWlkLW9uLW5v
bi1vYmplY3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorZnVuY3Rpb24gYXNz
ZXJ0KGIpIHsKKyAgICBpZiAoIWIpCisgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFkIGFzc2Vy
dGlvbi4iKQorfQorCitmdW5jdGlvbiBmb28obykgeworICAgIGFzc2VydChvLmxlbmd0aCA9PT0g
by5sZW5ndGgpOworICAgIHJldHVybiBvLmxlbmd0aDsKK30KK25vSW5saW5lKGZvbyk7CisKK2xl
dCBpdGVtcyA9IFtdOworY29uc3QgbnVtSXRlbXMgPSAzMDsKK2ZvciAobGV0IGkgPSAwOyBpIDwg
bnVtSXRlbXM7IGkrKykgeworICAgIGxldCBvID0ge307CisgICAgZm9yIChsZXQgaiA9IDA7IGog
PCBpOyBqKyspIHsKKyAgICAgICAgb1tqICsgImoiXSA9IGo7CisgICAgfQorICAgIG8ubGVuZ3Ro
ID0gMjsKKyAgICBpdGVtcy5wdXNoKG8pOworfSAKKworaXRlbXMucHVzaCgic3QiKTsKKworZm9y
IChsZXQgaSA9IDA7IGkgPCAxMDAwMDsgaSsrKQorICAgIGFzc2VydChmb28oaXRlbXNbaSAlIGl0
ZW1zLmxlbmd0aF0pID09PSAyKTsKKworTnVtYmVyLnByb3RvdHlwZS5sZW5ndGggPSAyOworaXRl
bXMucHVzaCg0Mik7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspCisgICAgYXNz
ZXJ0KGZvbyhpdGVtc1tpICUgaXRlbXMubGVuZ3RoXSkgPT09IDIpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTAyIEBACisyMDE2LTEwLTI5ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdlIHNob3VsZCBoYXZl
IGEgd2F5IG9mIHByb2ZpbGluZyB3aGVuIGEgZ2V0X2J5X2lkIGlzIHB1cmUgYW5kIHRvIGVtaXQg
YSBQdXJlR2V0QnlJZCBpbiB0aGUgREZHL0ZUTAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMzA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VpdGgg
TWlsbGVyLgorCisgICAgICAgIFRoaXMgY3JlYXRlcyBhIG5ldyBHZXRCeUlkIG5vZGUgaW4gdGhl
IERGRyBjYWxsZWQgUHVyZUdldEJ5SWQuIFdlIGVtaXQgYQorICAgICAgICBQdXJlR2V0QnlJZCB3
aGVuIHdlIHByb2ZpbGUgdGhhdCBhIGdldF9ieV9pZCBpbiB0aGUgYmFzZWxpbmUgbmV2ZXIgZG9l
cworICAgICAgICBzaWRlIGVmZmVjdHMuIFB1cmVHZXRCeUlkIHNwZWN1bGF0ZXMgb24gdGhlIGZh
Y3QgdGhhdCBpdCB3b24ndCBkbyBzaWRlCisgICAgICAgIGVmZmVjdHMuIElmIGl0IHJlYWxpemVz
IHRoYXQgaXQgbXVzdCBwZXJmb3JtIHNpZGUgZWZmZWN0cywgaXQgd2lsbCBwZXJmb3JtCisgICAg
ICAgIHRoZSBzaWRlIGVmZmVjdCwgYnV0IGFsc28gaW52YWxpZGF0ZSB0aGUgQ29kZUJsb2NrIHRo
YXQgY29tcGlsZWQgaXQsCisgICAgICAgIHdoaWNoIHdpbGwgY2F1c2UgdXMgdG8gZXhpdCBvbmNl
IHdlIHJldHVybiBiYWNrIHRvIHRoZSBjb21waWxlZCBjb2RlLgorICAgICAgICBUaGlzIGFsbG93
cyB1cyB0byBoYXZlIHN0cmljdGVyIGNsb2JiZXJpemUgcnVsZXMgZm9yIFB1cmVHZXRCeUlkIHdo
aWNoCisgICAgICAgIG1vZGVsIGhvdyBnZXRPd25Qcm9wZXJ0eVNsb3QoVk1JbnF1aXJ5KSBiZWhh
dmVzLiBUaGlzIG1lYW5zIHRoYXQgUHVyZUdldEJ5SWRzCisgICAgICAgIGNhbiBiZSBDU0VkIHdp
dGggZWFjaCBvdGhlciwgYW5kIHRoYXQgb3RoZXIgdGhpbmdzIGFyZSBtb3JlIGxpa2VseSB0bwor
ICAgICAgICBiZSBDU0VkIGFyb3VuZCBhIFB1cmVHZXRCeUlkLiBUbyBwcm9maWxlIGlmIGEgZ2V0
X2J5X2lkIGRvZXMgc2lkZQorICAgICAgICBlZmZlY3RzLCBJJ3ZlIGFkZGVkIGFuIGV4dHJhIGJp
dCBpbnRvIFN0cnVjdHVyZVN0dWJJbmZvIHRoYXQgd2Ugd3JpdGUKKyAgICAgICAgdG8gd2hlbiBw
ZXJmb3JtaW5nIGEgZ2V0X2J5X2lkIHNsb3cgcGF0aCBjYWxsLiBJZiB3ZSBub3RpY2UgdGhhdCB3
ZQorICAgICAgICBuZXZlciBkbyBlZmZlY3RzLCBpbnNpZGUgdGhlIEJ5dGVDb2RlUGFyc2VyLCB3
ZSB3aWxsIGVtaXQgYSBQdXJlR2V0QnlJZAorICAgICAgICBpbnN0ZWFkIG9mIGEgR2V0QnlJZC4K
KworICAgICAgICBUbyBqdXN0aWZ5IHRoZSBwZXJmb3JtYW5jZSBiZW5lZml0IG9mIHRoaXMgcGF0
Y2gsIEkgcmFuIHRoZSBzdWl0ZSBvZgorICAgICAgICBiZW5jaG1hcmtzIHdpdGggdXNlQWNjZXNz
SW5saW5pbmc9ZmFsc2UuIFRoaXMgbWVhbnQgdGhhdCB3ZSBkb24ndCBjb21waWxlCisgICAgICAg
IGFueSAoTXVsdGkpR2V0QnlPZmZzZXQvKE11bHRpKVB1dEJ5T2Zmc2V0LiBUaGlzIHdhcyBqdXN0
IHRvIHRyeSB0byBzZWUgaWYKKyAgICAgICAgdGhpcyBwYXRjaCBpcyB3b3J0aCBhbnl0aGluZyBh
dCBhbGwgaW4gYSB3b3JsZCB3aGVyZSB3ZSBlbWl0IG1hbnkKKyAgICAgICAgUHVyZUdldEJ5SWRz
LiBSdW5uaW5nIHRoZSBiZW5jaG1hcmtzIHVuZGVyIHRoaXMgbW9kZSBzaG93ZWQgYSAzLjUlIG9j
dGFuZQorICAgICAgICBpbXByb3ZlbWVudCBhbmQgYSAxNSUga3Jha2VuIGltcHJvdmVtZW50LiBI
b3dldmVyLCB3aGVuIHJ1bm5pbmcgYmVuY2htYXJrcworICAgICAgICB3aXRoIHVzZUFjY2Vzc0lu
bGluaW5nPXRydWUgKHRoZSBkZWZhdWx0IEpTQyBzdGF0ZSksIHRoaXMgcGF0Y2ggaXMgbmV1dHJh
bC4KKyAgICAgICAgSSB0aGluayB0aGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCB0aGUg
REZHIGlzIGdvb2QgYXQga25vd2luZyB3aGVuIHRvCisgICAgICAgIGVtaXQgKE11bHRpKUdldEJ5
T2Zmc2V0LCBhbmQgbW9zdCBiZW5jaG1hcmtzIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tCisgICAg
ICAgIFB1cmVHZXRCeUlkIGFyZSBhbHJlYWR5IGVtaXR0aW5nIChNdWx0aSlHZXRCeU9mZnNldC4g
SG93ZXZlciwgUHVyZUdldEJ5SWQgY2FuIGJlCisgICAgICAgIHByb2ZpdGFibGUgd2hlbiB3ZSBl
bmNvdW50ZXIgY29kZSB0aGF0IGlzIHRvbyBwb2x5bW9ycGhpYyBmb3IgKE11bHRpKUdldEJ5T2Zm
c2V0LgorICAgICAgICBJdCdzIHJlYXNvbmFibGUgdG8gZXhwZWN0IHRoYXQgSlMgY29kZSBpbiB0
aGUgd2lsZCB3aWxsIGZhbGwgaW50byB0aGlzIHVzZQorICAgICAgICBjYXNlIGV2ZW4gdGhvdWdo
IGl0IG1pZ2h0IG5vdCBiZSByZXByZXNlbnRlZCBpbiBzb21lIG9mIHRoZSBtYWpvciBKUyBiZW5j
aG1hcmtzLgorICAgICAgICBJIHdyb3RlIHNvbWUgbWljcm9iZW5jaG1hcmtzIHRvIGRlbW9uc3Ry
YXRlIHRoZSBiZW5lZml0cyBvZiBQdXJlR2V0QnlJZCBDU0UsCisgICAgICAgIGFuZCB0aGV5IHdl
cmUgMzAlIChlbGltaW5hdGluZyBhIGZldyBQdXJlR2V0QnlJZCBmcm9tIGFuIGFkZCBleHByZXNz
aW9uKQorICAgICAgICB0byAxMHggZmFzdGVyIChlbGltaW5hdGluZyBhIFB1cmVHZXRCeUlkIGlu
IGEgbG9vcCkuCisKKyAgICAgICAgKiBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHA6Cisg
ICAgICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpTdHJ1Y3R1cmVTdHViSW5mbyk6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZVN0dWJJbmZvOjpyZXNldCk6CisgICAgICAgICogYnl0ZWNvZGUv
U3RydWN0dXJlU3R1YkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3Ry
YWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1v
ZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNhbkJlY29tZUdldEFycmF5TGVuZ3RoKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXplKToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRG
b2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNl
Ojpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAqIGRmZy9E
RkdOb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0QnlPZmZzZXQp
OgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQpOgor
ICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0lkZW50aWZpZXIpOgorICAgICAgICAoSlNDOjpE
Rkc6Ok5vZGU6Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUu
aDoKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAg
ICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRv
RXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRyeUdldEJ5SWQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHVyZUdldEJ5SWQpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0
QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y2FjaGVkR2V0QnlJZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRG
R1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxl
Tm9kZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVHZXRC
eUlkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Z2V0QnlJZCk6Cisg
ICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpwdXJlR2V0QnlJ
ZENvbW1vbik6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBqaXQv
SklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dl
dF9ieV9pZCk6CisgICAgICAgICogaml0L0pJVFByb3BlcnR5QWNjZXNzMzJfNjQuY3BwOgorICAg
ICAgICAoSlNDOjpKSVQ6OmVtaXRfb3BfdHJ5X2dldF9ieV9pZCk6CisgICAgICAgICogaml0L1Jl
cGF0Y2guY3BwOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZU9wdGltaXppbmdHZXRCeUlkRnVu
Y3Rpb24pOgorICAgICAgICAoSlNDOjphcHByb3ByaWF0ZUdlbmVyaWNHZXRCeUlkRnVuY3Rpb24p
OgorICAgICAgICAoSlNDOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAgICAqIGppdC9SZXBhdGNo
Lmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHA6CisgICAg
ICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVySmV0
dGlzb25SZWFzb24uaDoKKwogMjAxNi0xMC0yOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEJyZWFrcG9pbnRzIG5vdCB3b3Jr
aW5nIGluIHNjcmlwdHMgd2l0aCB1bmljb2RlIGNoYXJhY3RlcnMKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVyZVN0dWJJbmZvLmNwcAkocmV2
aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1N0cnVjdHVy
ZVN0dWJJbmZvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBTdHJ1Y3R1cmVT
dHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8oQWNjCiAgICAgLCByZXNldEJ5R0MoZmFsc2UpCiAg
ICAgLCB0b29rU2xvd1BhdGgoZmFsc2UpCiAgICAgLCBldmVyQ29uc2lkZXJlZChmYWxzZSkKKyAg
ICAsIGRpZFNpZGVFZmZlY3RzKGZhbHNlKQogewogfQogCkBAIC0yMTYsNyArMjE3LDEwIEBAIHZv
aWQgU3RydWN0dXJlU3R1YkluZm86OnJlc2V0KENvZGVCbG9jayoKICAgICB9CiAKICAgICBzd2l0
Y2ggKGFjY2Vzc1R5cGUpIHsKLSAgICBjYXNlIEFjY2Vzc1R5cGU6OkdldFB1cmU6CisgICAgY2Fz
ZSBBY2Nlc3NUeXBlOjpUcnlHZXQ6CisgICAgICAgIHJlc2V0R2V0QnlJRChjb2RlQmxvY2ssICp0
aGlzLCBHZXRCeUlES2luZDo6VHJ5KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBY2Nlc3NU
eXBlOjpQdXJlR2V0OgogICAgICAgICByZXNldEdldEJ5SUQoY29kZUJsb2NrLCAqdGhpcywgR2V0
QnlJREtpbmQ6OlB1cmUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1
cmVTdHViSW5mby5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvU3RydWN0dXJlU3R1YkluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNyArNDYs
OCBAQCBjbGFzcyBQb2x5bW9ycGhpY0FjY2VzczsKIAogZW51bSBjbGFzcyBBY2Nlc3NUeXBlIDog
aW50OF90IHsKICAgICBHZXQsCi0gICAgR2V0UHVyZSwKKyAgICBUcnlHZXQsCisgICAgUHVyZUdl
dCwKICAgICBQdXQsCiAgICAgSW4KIH07CkBAIC0yMDUsNiArMjA2LDcgQEAgcHVibGljOgogICAg
IGJvb2wgcmVzZXRCeUdDIDogMTsKICAgICBib29sIHRvb2tTbG93UGF0aCA6IDE7CiAgICAgYm9v
bCBldmVyQ29uc2lkZXJlZCA6IDE7CisgICAgYm9vbCBkaWRTaWRlRWZmZWN0cyA6IDE7CiB9Owog
CiBpbmxpbmUgQ29kZU9yaWdpbiBnZXRTdHJ1Y3R1cmVTdHViSW5mb0NvZGVPcmlnaW4oU3RydWN0
dXJlU3R1YkluZm8mIHN0cnVjdHVyZVN0dWJJbmZvKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAko
cmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTE5LDYgKzIxMTksNyBA
QCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgIGZvck5v
ZGUobm9kZSkubWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CiAKKyAgICBjYXNlIFB1cmVH
ZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAg
ICAgICBpZiAoIW5vZGUtPnByZWRpY3Rpb24oKSkgewpAQCAtMjE1MCw3ICsyMTUxLDEwIEBAIGJv
b2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogCi0gICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNs
b2JiZXJMaW1pdCk7CisgICAgICAgIGlmIChub2RlLT5vcCgpID09IFB1cmVHZXRCeUlkKQorICAg
ICAgICAgICAgY2xvYmJlclN0cnVjdHVyZXMoY2xvYmJlckxpbWl0KTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxp
bWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5tYWtlSGVhcFRvcCgpOwogICAgICAgICBicmVh
azsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
cmF5TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MiwxMCArMTUyLDExIEBAIEFycmF5TW9k
ZSBBcnJheU1vZGU6OmZyb21PYnNlcnZlZChjb25zdCAKIAogc3RhdGljIGJvb2wgY2FuQmVjb21l
R2V0QXJyYXlMZW5ndGgoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogewotICAgIGlmIChub2Rl
LT5vcCgpICE9IEdldEJ5SWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHVpZCA9
IGdyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKLSAgICByZXR1
cm4gdWlkID09IGdyYXBoLm1fdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLmltcGwoKTsKKyAgICBp
ZiAobm9kZS0+b3AoKSA9PSBHZXRCeUlkIHx8IG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpIHsK
KyAgICAgICAgYXV0byB1aWQgPSBncmFwaC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJO
dW1iZXIoKV07CisgICAgICAgIHJldHVybiB1aWQgPT0gZ3JhcGgubV92bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGguaW1wbCgpOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIEFycmF5TW9k
ZSBBcnJheU1vZGU6OnJlZmluZSgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMwNywxMCArMzMwNywxOSBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlkKAog
ICAgIH0KICAgICAKICAgICBOb2RlVHlwZSBnZXRCeUlkOwotICAgIGlmICh0eXBlID09IEFjY2Vz
c1R5cGU6OkdldCkKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEFjY2Vzc1R5cGU6Okdl
dDoKICAgICAgICAgZ2V0QnlJZCA9IGdldEJ5SWRTdGF0dXMubWFrZXNDYWxscygpID8gR2V0QnlJ
ZEZsdXNoIDogR2V0QnlJZDsKLSAgICBlbHNlCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQWNj
ZXNzVHlwZTo6VHJ5R2V0OgogICAgICAgICBnZXRCeUlkID0gVHJ5R2V0QnlJZDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBBY2Nlc3NUeXBlOjpQdXJlR2V0OgorICAgICAgICBnZXRCeUlkID0g
UHVyZUdldEJ5SWQ7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQogCiAgICAgLy8gU3BlY2lhbCBwYXRoIGZv
ciBjdXN0b20gYWNjZXNzb3JzIHNpbmNlIGN1c3RvbSdzIG9mZnNldCBkb2VzIG5vdCBoYXZlIGFu
eSBtZWFuaW5ncy4KICAgICAvLyBTbywgdGhpcyBpcyBjb21wbGV0ZWx5IGRpZmZlcmVudCBmcm9t
IFNpbXBsZSBvbmUuIEJ1dCB3ZSBoYXZlIGEgY2hhbmNlIHRvIG9wdGltaXplIGl0IHdoZW4gd2Ug
dXNlIERPTUpJVC4KQEAgLTQxOTgsNyArNDIwNyw4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTm9kZSogYmFzZSA9IGdldChWaXJ0dWFs
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZCkpOwogICAgICAgICAgICAg
Tm9kZSogcHJvcGVydHkgPSBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJvb2wgY29tcGlsZWRBc0dldEJ5SWQgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGJvb2wgY29tcGlsZUFzR2V0QnlJZCA9IGZhbHNlOworICAgICAgICAg
ICAgYm9vbCBjb21waWxlQXNQdXJlR2V0QnlJZCA9IGZhbHNlOwogICAgICAgICAgICAgR2V0QnlJ
ZFN0YXR1cyBnZXRCeUlkU3RhdHVzOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IDA7CiAgICAgICAgICAgICB7CkBAIC00MjA3LDcgKzQyMTcsOCBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8gRklYTUU6
IFdoZW4gdGhlIGJ5dGVjb2RlIGlzIG5vdCBjb21waWxlZCBpbiB0aGUgYmFzZWxpbmUgSklULCBi
eVZhbEluZm8gYmVjb21lcyBudWxsLgogICAgICAgICAgICAgICAgIC8vIEF0IHRoYXQgdGltZSwg
dGhlcmUgaXMgbm8gaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5mbyAm
JiBieVZhbEluZm8tPnN0dWJJbmZvICYmICFieVZhbEluZm8tPnRvb2tTbG93UGF0aCAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkSWRlbnQpICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRl
KG1fY3VycmVudEluZGV4LCBCYWRDZWxsKSkgewotICAgICAgICAgICAgICAgICAgICBjb21waWxl
ZEFzR2V0QnlJZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVBc0dldEJ5SWQg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb21waWxlQXNQdXJlR2V0QnlJZCA9ICFieVZh
bEluZm8tPnN0dWJJbmZvLT5kaWRTaWRlRWZmZWN0czsKICAgICAgICAgICAgICAgICAgICAgaWRl
bnRpZmllck51bWJlciA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKS5lbnN1cmUoYnlWYWxJbmZvLT5j
YWNoZWRJZC5pbXBsKCkpOwogICAgICAgICAgICAgICAgICAgICBVbmlxdWVkU3RyaW5nSW1wbCog
dWlkID0gbV9ncmFwaC5pZGVudGlmaWVycygpW2lkZW50aWZpZXJOdW1iZXJdOwogCkBAIC00MjI1
LDkgKzQyMzYsMTAgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGNvbXBp
bGVkQXNHZXRCeUlkKQotICAgICAgICAgICAgICAgIGhhbmRsZUdldEJ5SWQoY3VycmVudEluc3Ry
dWN0aW9uWzFdLnUub3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRlbnRpZmllck51bWJlciwg
Z2V0QnlJZFN0YXR1cywgQWNjZXNzVHlwZTo6R2V0LCBPUENPREVfTEVOR1RIKG9wX2dldF9ieV92
YWwpKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGNvbXBpbGVBc0dldEJ5
SWQpIHsKKyAgICAgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGUgPSBjb21waWxlQXNQdXJlR2V0
QnlJZCA/IEFjY2Vzc1R5cGU6OlB1cmVHZXQgOiBBY2Nlc3NUeXBlOjpHZXQ7CisgICAgICAgICAg
ICAgICAgaGFuZGxlR2V0QnlJZChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBwcmVk
aWN0aW9uLCBiYXNlLCBpZGVudGlmaWVyTnVtYmVyLCBnZXRCeUlkU3RhdHVzLCB0eXBlLCBPUENP
REVfTEVOR1RIKG9wX2dldF9ieV92YWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgQXJyYXlNb2RlIGFycmF5TW9kZSA9IGdldEFycmF5TW9kZShjdXJyZW50SW5zdHJ1
Y3Rpb25bNF0udS5hcnJheVByb2ZpbGUsIEFycmF5OjpSZWFkKTsKICAgICAgICAgICAgICAgICBO
b2RlKiBnZXRCeVZhbCA9IGFkZFRvR3JhcGgoR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNX
b3JkKCkpLCBPcEluZm8ocHJlZGljdGlvbiksIGJhc2UsIHByb3BlcnR5KTsKICAgICAgICAgICAg
ICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBHZXRCeVZhbCBtdXN0IGJlIHRyZWF0ZWQgYXMgaWYg
aXQgY2xvYmJlcnMgZXhpdCBzdGF0ZSwgc2luY2UgRml4dXBQaGFzZSBtYXkgbWFrZSBpdCBnZW5l
cmljLgpAQCAtNDM2Myw3ICs0Mzc1LDE4IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2ssIG1fZGZnQ29kZUJsb2NrLAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fc3R1YkluZm9zLCBtX2RmZ1N0dWJJbmZvcywKICAgICAgICAgICAgICAgICBjdXJyZW50Q29k
ZU9yaWdpbigpLCB1aWQpOwotICAgICAgICAgICAgQWNjZXNzVHlwZSB0eXBlID0gb3BfdHJ5X2dl
dF9ieV9pZCA9PSBvcGNvZGVJRCA/IEFjY2Vzc1R5cGU6OkdldFB1cmUgOiBBY2Nlc3NUeXBlOjpH
ZXQ7CisgICAgICAgICAgICBBY2Nlc3NUeXBlIHR5cGU7CisgICAgICAgICAgICBpZiAob3Bjb2Rl
SUQgPT0gb3BfdHJ5X2dldF9ieV9pZCkgCisgICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc1R5
cGU6OlRyeUdldDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIENvbmN1cnJl
bnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bV9s
b2NrKTsKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gY3VycmVudENv
ZGVPcmlnaW4oKS5ieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvKiBpbmZvID0gbV9pbmxpbmVTdGFja1RvcC0+bV9zdHViSW5mb3MuZ2V0KENvZGVPcmlnaW4o
Ynl0ZWNvZGVJbmRleCkpOworICAgICAgICAgICAgICAgIGlmIChpbmZvICYmIGluZm8tPmV2ZXJD
b25zaWRlcmVkICYmICFpbmZvLT5kaWRTaWRlRWZmZWN0cykKKyAgICAgICAgICAgICAgICAgICAg
dHlwZSA9IEFjY2Vzc1R5cGU6OlB1cmVHZXQ7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzVHlwZTo6R2V0OworICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICB1bnNpZ25lZCBvcGNvZGVMZW5ndGggPSBvcGNvZGVJRCA9PSBvcF90cnlfZ2V0
X2J5X2lkID8gT1BDT0RFX0xFTkdUSChvcF90cnlfZ2V0X2J5X2lkKSA6IE9QQ09ERV9MRU5HVEgo
b3BfZ2V0X2J5X2lkKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9i
YmVyaXplLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OTUsNiArNDk1LDM1IEBAIHZvaWQg
Y2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUKICAgICAgICAgZGVmKEhlYXBMb2Nh
dGlvbihJc0Z1bmN0aW9uTG9jLCBNaXNjRmllbGRzLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2Rl
KG5vZGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKKyAgICBjYXNlIFB1cmVHZXRCeUlk
OiB7CisgICAgICAgIC8vIFdlIG1vZGVsIHdoYXQgaXMgYWxsb3dlZCBpbnNpZGUgYSBnZXRPd25Q
cm9wZXJ0eVNsb3QoVk1JbnF1aXJ5KSBoZXJlLgorICAgICAgICAvLyBTb21lIGdldE93blByb3Bl
cnR5U2xvdCBpbXBsZW1lbnRhdGlvbnMgd2lsbCBsYXppbHkgaW5qZWN0IHByb3BlcnRpZXMsIHdo
aWNoCisgICAgICAgIC8vIG1heSBjaGFuZ2UgdGhlIG9iamVjdCdzIHN0cnVjdHVyZS4KKworICAg
ICAgICByZWFkKEpTQ2VsbF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHJlYWQoSlNDZWxsX3R5cGVJ
bmZvRmxhZ3MpOworICAgICAgICByZWFkKEpTQ2VsbF90eXBlSW5mb1R5cGUpOworICAgICAgICBy
ZWFkKEpTQ2VsbF9pbmRleGluZ1R5cGUpOworICAgICAgICByZWFkKEpTT2JqZWN0X2J1dHRlcmZs
eSk7CisgICAgICAgIHJlYWQoTWlzY0ZpZWxkcyk7CisKKyAgICAgICAgQWJzdHJhY3RIZWFwIHBy
b3BlcnR5TmFtZUhlYXAoTmFtZWRQcm9wZXJ0aWVzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCkp
OworICAgICAgICByZWFkKHByb3BlcnR5TmFtZUhlYXApOworCisgICAgICAgIHdyaXRlKEpTQ2Vs
bF9zdHJ1Y3R1cmVJRCk7CisgICAgICAgIHdyaXRlKEpTQ2VsbF90eXBlSW5mb0ZsYWdzKTsKKwor
ICAgICAgICB3cml0ZShXYXRjaHBvaW50X2ZpcmUpOworICAgICAgICB3cml0ZShNaXNjRmllbGRz
KTsKKworICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgbGF6aWx5IGFkZGluZyBmaWVsZHMg
dG8gYW4gb2JqZWN0IGhhcHBlbnMgaW4gZ2V0T3duUHJvcGVydHlTbG90CisgICAgICAgIC8vIGFu
ZCB3ZSBuZWVkIHRvIGFsbG9jYXRlIG91dCBvZiBsaW5lIHN0b3JhZ2UuCisgICAgICAgIHdyaXRl
KEpTT2JqZWN0X2J1dHRlcmZseSk7CisKKyAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihOYW1lZFBy
b3BlcnR5TG9jLCBwcm9wZXJ0eU5hbWVIZWFwLCBub2RlLT5jaGlsZDEoKSksIExhenlOb2RlKG5v
ZGUpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlJZDoKICAgICBj
YXNlIEdldEJ5SWRGbHVzaDoKICAgICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4LDYgKzQ0OCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICAgICAgY2FzZSBQdXJlR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJ
ZDoKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgRWRn
ZSBjaGlsZEVkZ2UgPSBub2RlLT5jaGlsZDEoKTsKQEAgLTQ1OSw2ICs0NjAsOSBAQCBwcml2YXRl
OgogICAgICAgICAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOyAv
LyBQdXNoIENGQSBvdmVyIHRoaXMgbm9kZSBhZnRlciB3ZSBnZXQgdGhlIHN0YXRlIGJlZm9yZS4K
ICAgICAgICAgICAgICAgICBhbHJlYWR5SGFuZGxlZCA9IHRydWU7IC8vIERvbid0IGFsbG93IHRo
ZSBkZWZhdWx0IGNvbnN0YW50IGZvbGRlciB0byBkbyB0aGluZ3MgdG8gdGhpcy4KIAorICAgICAg
ICAgICAgICAgIGlmICghT3B0aW9uczo6dXNlQWNjZXNzSW5saW5pbmcoKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgICAgICBpZiAoYmFzZVZhbHVlLm1fc3RydWN0
dXJlLmlzVG9wKCkgfHwgYmFzZVZhbHVlLm1fc3RydWN0dXJlLmlzQ2xvYmJlcmVkKCkKICAgICAg
ICAgICAgICAgICAgICAgfHwgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNl
IHx8IChiYXNlVmFsdWUubV90eXBlICYgflNwZWNDZWxsKSkpCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwpAQCAtNTE0LDYgKzUxOCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9p
bnRlcnByZXRlci5leGVjdXRlKGluZGV4SW5CbG9jayk7IC8vIFB1c2ggQ0ZBIG92ZXIgdGhpcyBu
b2RlIGFmdGVyIHdlIGdldCB0aGUgc3RhdGUgYmVmb3JlLgogICAgICAgICAgICAgICAgIGFscmVh
ZHlIYW5kbGVkID0gdHJ1ZTsgLy8gRG9uJ3QgYWxsb3cgdGhlIGRlZmF1bHQgY29uc3RhbnQgZm9s
ZGVyIHRvIGRvIHRoaW5ncyB0byB0aGlzLgogCisgICAgICAgICAgICAgICAgaWYgKCFPcHRpb25z
Ojp1c2VBY2Nlc3NJbmxpbmluZygpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgICAgIGlmIChiYXNlVmFsdWUubV9zdHJ1Y3R1cmUuaXNUb3AoKSB8fCBiYXNlVmFs
dWUubV9zdHJ1Y3R1cmUuaXNDbG9iYmVyZWQoKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2Vz
R0MuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvZXNHQy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NCw2ICsyNjQsNyBAQCBib29sIGRvZXNH
QyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBSZXNvbHZlU2NvcGU6CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAorICAgIGNhc2UgUHVyZUdldEJ5SWQ6IC8vIFdlIGFyZSBtb2Rl
bGluZyBnZXRPd25Qcm9wZXJ0eVNsb3QgaGVyZSwgd2hpY2ggbWF5IEdDIGJlY2F1c2UgaXQgaXMg
YWxsb3dlZCB0byBhbGxvY2F0ZSB0aGluZ3MuCiAgICAgY2FzZSBDcmVhdGVBY3RpdmF0aW9uOgog
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgogICAgIGNhc2UgQ3JlYXRlU2NvcGVkQXJn
dW1lbnRzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTY3LDYgKzExNjcsNyBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIFB1cmVHZXRC
eUlkOgogICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOiB7
CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUgQnl0ZUNv
ZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTMyLDcgKzUzMiw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB2b2lkIGNvbnZlcnRUb0dldEJ5T2Zmc2V0KFN0b3JhZ2VBY2Nlc3NEYXRhJiBkYXRh
LCBFZGdlIHN0b3JhZ2UsIEVkZ2UgYmFzZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChtX29wID09
IEdldEJ5SWQgfHwgbV9vcCA9PSBHZXRCeUlkRmx1c2ggfHwgbV9vcCA9PSBNdWx0aUdldEJ5T2Zm
c2V0KTsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRG
bHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlkIHx8IG1fb3AgPT0gTXVsdGlHZXRCeU9mZnNldCk7
CiAgICAgICAgIG1fb3BJbmZvID0gJmRhdGE7CiAgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMShz
dG9yYWdlKTsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQyKGJhc2UpOwpAQCAtNTQyLDcgKzU0
Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGNvbnZlcnRUb011bHRpR2V0QnlPZmZzZXQo
TXVsdGlHZXRCeU9mZnNldERhdGEqIGRhdGEpCiAgICAgewotICAgICAgICBBU1NFUlQobV9vcCA9
PSBHZXRCeUlkIHx8IG1fb3AgPT0gR2V0QnlJZEZsdXNoKTsKKyAgICAgICAgQVNTRVJUKG1fb3Ag
PT0gR2V0QnlJZCB8fCBtX29wID09IEdldEJ5SWRGbHVzaCB8fCBtX29wID09IFB1cmVHZXRCeUlk
KTsKICAgICAgICAgbV9vcEluZm8gPSBkYXRhOwogICAgICAgICBjaGlsZDEoKS5zZXRVc2VLaW5k
KENlbGxVc2UpOwogICAgICAgICBtX29wID0gTXVsdGlHZXRCeU9mZnNldDsKQEAgLTkxOCw2ICs5
MTgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIFRy
eUdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKKyAgICAgICAgY2FzZSBQdXJlR2V0QnlJ
ZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhU
aGlzOgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CkBAIC0xNDI4LDYgKzE0MjksNyBAQCBwdWJsaWM6
CiAgICAgICAgIGNhc2UgQXJpdGhDZWlsOgogICAgICAgICBjYXNlIEFyaXRoVHJ1bmM6CiAgICAg
ICAgIGNhc2UgR2V0RGlyZWN0UG5hbWU6CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CiAgICAg
ICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6CiAgICAgICAgIGNh
c2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODUsNiArMTg1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhQdXRCeVZhbEFsaWFzLCBOb2RlTXVz
dEdlbmVyYXRlIHwgTm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhUcnlHZXRCeUlkLCBOb2Rl
UmVzdWx0SlMpIFwKKyAgICBtYWNybyhQdXJlR2V0QnlJZCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkRmx1c2gsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRCeUlkV2l0aFRoaXMsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAyMDgwOTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjgyLDYgKzY4Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgUmVnRXhwVGVzdDoKICAgICAgICAgY2FzZSBTdHJpbmdSZXBsYWNl
OgogICAgICAgICBjYXNlIFN0cmluZ1JlcGxhY2VSZWdFeHA6CisgICAgICAgIGNhc2UgUHVyZUdl
dEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgY2FzZSBHZXRCeUlkRmx1c2g6
CiAgICAgICAgIGNhc2UgR2V0QnlJZFdpdGhUaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTksNiArMTk5LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBz
dAogICAgIGNhc2UgVHJ5R2V0QnlJZDoKICAgICBjYXNlIERlbGV0ZUJ5SWQ6CiAgICAgY2FzZSBE
ZWxldGVCeVZhbDoKKyAgICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKICAg
ICBjYXNlIEdldEJ5SWRXaXRoVGhpczoKICAgICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMCw2ICsyMTAs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjYWNoZWRHZXRCeUlkKAogICAgIEpfSklUT3BlcmF0
aW9uX0VTc2lKSSBnZXRCeUlkRnVuY3Rpb247CiAgICAgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6
R2V0KQogICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemU7
CisgICAgZWxzZSBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0KQorICAgICAgICBnZXRC
eUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwogICAgIGVsc2UKICAg
ICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCkBA
IC00MjY5LDYgKzQyNzEsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBu
b2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7Cisg
ICAgICAgIGNvbXBpbGVQdXJlR2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQor
CiAgICAgY2FzZSBHZXRCeUlkV2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFz
ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0g
YmFzZS5qc1ZhbHVlUmVncygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzksOCArMTc5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNhY2hlZEdldEJ5SWQo
Q29kZU8KICAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChzbG93UGF0aFRhcmdldCk7CiAgICAgc2xv
d0Nhc2VzLmFwcGVuZChnZW4uc2xvd1BhdGhKdW1wKCkpOwogICAgIAorICAgIGF1dG8gc2xvd1Bh
dGhGdW5jdGlvbiA9IHR5cGUgPT0gQWNjZXNzVHlwZTo6R2V0ID8gb3BlcmF0aW9uR2V0QnlJZE9w
dGltaXplIDoKKyAgICAgICAgdHlwZSA9PSBBY2Nlc3NUeXBlOjpQdXJlR2V0ID8gb3BlcmF0aW9u
UHVyZUdldEJ5SWRPcHRpbWl6ZSA6IG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZTsKKwogICAg
IGF1dG8gc2xvd1BhdGggPSBzbG93UGF0aENhbGwoCi0gICAgICAgIHNsb3dDYXNlcywgdGhpcywg
dHlwZSA9PSBBY2Nlc3NUeXBlOjpHZXQgPyBvcGVyYXRpb25HZXRCeUlkT3B0aW1pemUgOiBvcGVy
YXRpb25UcnlHZXRCeUlkT3B0aW1pemUsCisgICAgICAgIHNsb3dDYXNlcywgdGhpcywgc2xvd1Bh
dGhGdW5jdGlvbiwKICAgICAgICAgc3BpbGxNb2RlLCBFeGNlcHRpb25DaGVja1JlcXVpcmVtZW50
OjpDaGVja05lZWRlZCwKICAgICAgICAgcmVzdWx0R1BSLCBnZW4uc3R1YkluZm8oKSwgYmFzZUdQ
UiwgaWRlbnRpZmllclVJRChpZGVudGlmaWVyTnVtYmVyKSk7CiAgICAgCkBAIC00MjM1LDYgKzQy
MzgsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIFB1cmVHZXRCeUlkOiB7CisgICAgICAgIGNvbXBp
bGVQdXJlR2V0QnlJZChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBH
ZXRCeUlkRmx1c2g6IHsKICAgICAgICAgaWYgKCFub2RlLT5wcmVkaWN0aW9uKCkpIHsKICAgICAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEluYWRlcXVhdGVDb3ZlcmFnZSwg
SlNWYWx1ZVJlZ3MoKSwgMCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
MDMsNyArMTAwMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE4K
IAogICAgICAgICBiYXNlLnVzZSgpOwogCi0gICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3Jp
Z2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJl
cigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6R2V0UHVy
ZSk7CisgICAgICAgIGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVn
cywgcmVzdWx0UmVncywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVt
cCgpLCBOZWVkVG9TcGlsbCwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsKIAogICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKICAgICAgICAgYnJlYWs7CkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAKICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChiYXNlUmVncyk7CiAKLSAgICAg
ICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VSZWdzLCByZXN1bHRS
ZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nl
c3NUeXBlOjpHZXRQdXJlKTsKKyAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VSZWdzLCByZXN1bHRSZWdzLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5v
dENlbGwsIE5lZWRUb1NwaWxsLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogCiAgICAgICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0UmVncywgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxl
ZEV4cGxpY2l0bHkpOwogICAgICAgICBicmVhazsKQEAgLTEwMzIsNiArMTAzMiw0MiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlVHJ5R2V0QnlJZChOCiAgICAgfSAKIH0KIAordm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1cmVHZXRCeUlkKE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKG5vZGUtPm9wKCkgPT0gUHVyZUdldEJ5SWQpOworCisgICAgc3dpdGNoIChub2RlLT5jaGls
ZDEoKS51c2VLaW5kKCkpIHsKKyAgICBjYXNlIENlbGxVc2U6IHsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEpTVmFsdWVS
ZWdzVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgYmFzZSk7CisKKyAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkoYmFzZS5ncHIoKSk7Cisg
ICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdFJlZ3MgPSByZXN1bHQucmVncygpOworCisgICAgICAg
IGNhY2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlUmVncywgcmVzdWx0UmVn
cywgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBKSVRDb21waWxlcjo6SnVtcCgpLCBOZWVkVG9T
cGlsbCwgQWNjZXNzVHlwZTo6UHVyZUdldCk7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1
bHRSZWdzLCBub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgVW50eXBlZFVz
ZTogeworICAgICAgICBKU1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgSlNWYWx1ZVJlZ3NUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCBiYXNlKTsK
KworICAgICAgICBKU1ZhbHVlUmVncyBiYXNlUmVncyA9IGJhc2UuanNWYWx1ZVJlZ3MoKTsKKyAg
ICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0UmVncyA9IHJlc3VsdC5yZWdzKCk7CisgICAgCisgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFz
ZVJlZ3MpOworICAgIAorICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVJlZ3MsIHJlc3VsdFJlZ3MsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2Vs
bCwgTmVlZFRvU3BpbGwsIEFjY2Vzc1R5cGU6OlB1cmVHZXQpOworICAgIAorICAgICAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFJlZ3MsIG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9
CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2RlKQogewogICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03MjEsNiArNzIxLDcgQEAgcHVibGljOgogICAgIHZvaWQgY29t
cGlsZURlbGV0ZUJ5SWQoTm9kZSopOwogICAgIHZvaWQgY29tcGlsZURlbGV0ZUJ5VmFsKE5vZGUq
KTsKICAgICB2b2lkIGNvbXBpbGVUcnlHZXRCeUlkKE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVQ
dXJlR2V0QnlJZChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlSW4oTm9kZSopOwogICAgIAogICAg
IHZvaWQgbm9uU3BlY3VsYXRpdmVOb25QZWVwaG9sZUNvbXBhcmVOdWxsT3JVbmRlZmluZWQoRWRn
ZSBvcGVyYW5kKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0
aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFi
aWxpdGllcy5jcHAJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3Niw3IEBA
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIE5ld0Fy
cmF5V2l0aFNpemU6CiAgICAgY2FzZSBUcnlHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZDoKKyAg
ICBjYXNlIFB1cmVHZXRCeUlkOgogICAgIGNhc2UgR2V0QnlJZEZsdXNoOgogICAgIGNhc2UgR2V0
QnlJZFdpdGhUaGlzOgogICAgIGNhc2UgVG9UaGlzOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjA4MDk5KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MjMsNyArNjIzLDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjb21waWxlUHV0U3Ry
dWN0dXJlKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUcnlHZXRCeUlkOgot
ICAgICAgICAgICAgY29tcGlsZUdldEJ5SWQoQWNjZXNzVHlwZTo6R2V0UHVyZSk7CisgICAgICAg
ICAgICBjb21waWxlR2V0QnlJZChBY2Nlc3NUeXBlOjpUcnlHZXQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUHVyZUdldEJ5SWQ6CisgICAgICAgICAgICBjb21waWxlR2V0QnlJ
ZChBY2Nlc3NUeXBlOjpQdXJlR2V0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdldEJ5SWQ6CiAgICAgICAgIGNhc2UgR2V0QnlJZEZsdXNoOgpAQCAtMjc4OCw3ICsyNzkxLDcg
QEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVHZXRCeUlkKEFjY2Vzc1R5cGUgdHlw
ZSkKICAgICB7Ci0gICAgICAgIEFTU0VSVCh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCB8fCB0eXBl
ID09IEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBBU1NFUlQodHlwZSA9PSBBY2Nlc3NU
eXBlOjpHZXQgfHwgdHlwZSA9PSBBY2Nlc3NUeXBlOjpUcnlHZXQgfHwgdHlwZSA9PSBBY2Nlc3NU
eXBlOjpQdXJlR2V0KTsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSkgewogICAgICAgICBjYXNlIENlbGxVc2U6IHsKICAgICAgICAgICAgIHNldEpTVmFsdWUoZ2V0
QnlJZChsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCB0eXBlKSk7CkBAIC0yODE1LDYgKzI4MTgs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgSl9KSVRPcGVyYXRpb25fRUpJIGdldEJ5SWRGdW5j
dGlvbjsKICAgICAgICAgICAgIGlmICh0eXBlID09IEFjY2Vzc1R5cGU6OkdldCkKICAgICAgICAg
ICAgICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYzsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQWNjZXNzVHlwZTo6UHVyZUdldCkKKyAgICAgICAgICAg
ICAgICBnZXRCeUlkRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZEdlbmVyaWM7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZ2V0QnlJZEZ1bmN0aW9uID0gb3BlcmF0aW9u
VHJ5R2V0QnlJZEdlbmVyaWM7CiAKQEAgLTg4MzgsNiArODg0Myw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBKX0pJVE9wZXJhdGlvbl9FU3NpSkkgb3B0aW1pemF0aW9uRnVu
Y3Rpb247CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBBY2Nlc3NUeXBlOjpH
ZXQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBv
cGVyYXRpb25HZXRCeUlkT3B0aW1pemU7CisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
ICh0eXBlID09IEFjY2Vzc1R5cGU6OlB1cmVHZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3B0aW1pemF0aW9uRnVuY3Rpb24gPSBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGltaXplOwog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wdGltaXphdGlvbkZ1bmN0aW9uID0gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAJKHJldmlz
aW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDYgKzcwLDM1IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CitBTFdBWVNfSU5MSU5FIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBwdXJlR2V0QnlJZENvbW1vbihW
TSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmlu
Z0ltcGwqIHVpZCwgY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkIChjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBJZGVudGlmaWVyJik+JiBmdW5jdGlvbiA9IFtdIChjb25zdCBQcm9wZXJ0eVNsb3Qm
LCBjb25zdCBJZGVudGlmaWVyJikgeyB9KQoreworICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVu
dGlmaWVyOjpmcm9tVWlkKCZ2bSwgdWlkKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShiYXNlKTsKKworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
ZXhlYy0+Y29kZUJsb2NrKCktPmppdFR5cGUoKSkpOworCisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlLCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnQsIHNsb3QsIFsmXSAoYm9vbCwgUHJvcGVydHlTbG90JikgLT4gSlNWYWx1ZSB7Cisg
ICAgICAgIGJvb2wgd2lsbERvU2lkZUVmZmVjdHMgPSAhKHNsb3QuaXNWYWx1ZSgpIHx8IHNsb3Qu
aXNVbnNldCgpKSB8fCBzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CisgICAgICAgIGlm
IChVTkxJS0VMWSh3aWxsRG9TaWRlRWZmZWN0cykpIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGVjLT5jb2RlT3JpZ2luKCk7CisgICAg
ICAgICAgICAgICAgQ29kZUJsb2NrKiBjdXJyZW50QmFzZWxpbmUgPSBiYXNlbGluZUNvZGVCbG9j
a0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKGNvZGVPcmlnaW4sIGV4ZWMtPmNvZGVCbG9j
aygpLT5hbHRlcm5hdGl2ZSgpKTsKKyAgICAgICAgICAgICAgICBDb2RlT3JpZ2luIG9yaWdpbkJ5
dGVjb2RlSW5kZXggPSBDb2RlT3JpZ2luKGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7IC8vIFNp
bmNlIHdlJ3JlIHNlYXJjaGluZyBpbiB0aGUgYmFzZWxpbmUsIHdlIGp1c3QgY2FyZSBhYm91dCBi
eXRlY29kZSBpbmRleC4KKyAgICAgICAgICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tl
cihjdXJyZW50QmFzZWxpbmUtPm1fbG9jayk7CisgICAgICAgICAgICAgICAgaWYgKFN0cnVjdHVy
ZVN0dWJJbmZvKiBzdHViID0gY3VycmVudEJhc2VsaW5lLT5maW5kU3R1YkluZm8ob3JpZ2luQnl0
ZWNvZGVJbmRleCkpCisgICAgICAgICAgICAgICAgICAgIHN0dWItPmRpZFNpZGVFZmZlY3RzID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpl
dHRpc29uKFByb2ZpbGVyOjpKZXR0aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzKTsKKyAgICAg
ICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHVpZCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbihzbG90LCBpZGVudCk7CisgICAgICAgIHJldHVybiBzbG90LmlzVmFsdWUo
KSA/IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKKyAgICB9KSk7
Cit9CisKIGV4dGVybiAiQyIgewogCiAjaWYgQ09NUElMRVIoTVNWQykKQEAgLTE2NSw2ICsxOTQs
MzggQEAgaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbnN0cnVjdAogICAgIHJldHVy
biBtaXNzaW5nQXJnQ291bnQ7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRHZW5lcmljKEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUg
YmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0o
KTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJl
dHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0sIGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHVyZUdldEJ5SWQoRXhlY1N0YXRlKiBl
eGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8sIEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQpCit7CisgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CisKKyAgICBzdHViSW5mby0+
dG9va1Nsb3dQYXRoID0gdHJ1ZTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0s
IGV4ZWMsIGJhc2UsIHVpZCk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uUHVyZUdldEJ5SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZVN0dWJJ
bmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKK3sKKyAgICBWTSogdm0gPSAmZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBleGVjKTsKKworICAgIHJldHVybiBwdXJlR2V0QnlJZENvbW1vbigqdm0s
IGV4ZWMsIGJhc2UsIHVpZCwgCisgICAgICAgIFsmXSAoY29uc3QgUHJvcGVydHlTbG90JiBzbG90
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkgeworICAgICAgICAgICAgQVNTRVJUKChzbG90Lmlz
VmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKSk7CisgICAgICAgICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShi
YXNlKTsKKyAgICAgICAgICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1
ZS5zdHJ1Y3R1cmVPck51bGwoKSkpCisgICAgICAgICAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhl
YywgYmFzZVZhbHVlLCBpZGVudCwgc2xvdCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7
CisgICAgICAgIH0pOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blRyeUdldEJ5SWQoRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8s
IEVuY29kZWRKU1ZhbHVlIGJhc2UsIFVuaXF1ZWRTdHJpbmdJbXBsKiB1aWQpCiB7CiAgICAgVk0q
IHZtID0gJmV4ZWMtPnZtKCk7CkBAIC0xNzksNyArMjQwLDYgQEAgRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25UcgogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2xvdC5n
ZXRQdXJlUmVzdWx0KCkpOwogfQogCi0KIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uVHJ5R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBi
YXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQogewogICAgIFZNKiB2bSA9ICZleGVjLT52bSgp
OwpAQCAtMjA3LDcgKzI2Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uVHIKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
IAogICAgIGlmIChzdHViSW5mby0+Y29uc2lkZXJDYWNoaW5nKGJhc2VWYWx1ZS5zdHJ1Y3R1cmVP
ck51bGwoKSkgJiYgIXNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSAmJiAoc2xvdC5pc0Nh
Y2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNl
dCgpKSkKLSAgICAgICAgcmVwYXRjaEdldEJ5SUQoZXhlYywgYmFzZVZhbHVlLCBpZGVudCwgc2xv
dCwgKnN0dWJJbmZvLCBHZXRCeUlES2luZDo6UHVyZSk7CisgICAgICAgIHJlcGF0Y2hHZXRCeUlE
KGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6OlRy
eSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0UHVyZVJlc3VsdCgpKTsK
IH0KQEAgLTIyNiw3ICsyODYsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZQogICAgIElkZW50aWZpZXIgaWRlbnQgPSBJZGVudGlmaWVyOjpmcm9tVWlkKHZtLCB1
aWQpOwogICAgIAogICAgIExPR19JQygoSUNFdmVudDo6T3BlcmF0aW9uR2V0QnlJZCwgYmFzZVZh
bHVlLmNsYXNzSW5mb09yTnVsbCgpLCBpZGVudCkpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgYm9vbCB3aWxsRG9TaWRl
RWZmZWN0cyA9ICEoc2xvdC5pc1ZhbHVlKCkgfHwgc2xvdC5pc1Vuc2V0KCkpIHx8IHNsb3QuaXNU
YWludGVkQnlPcGFxdWVPYmplY3QoKTsKKyAgICBzdHViSW5mby0+ZGlkU2lkZUVmZmVjdHMgfD0g
d2lsbERvU2lkZUVmZmVjdHM7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRHZW5lcmlj
KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgYmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwq
IHVpZCkKQEAgLTI1NSw2ICszMTgsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdlCiAgICAgTE9HX0lDKChJQ0V2ZW50OjpPcGVyYXRpb25HZXRCeUlkT3B0aW1pemUs
IGJhc2VWYWx1ZS5jbGFzc0luZm9Pck51bGwoKSwgaWRlbnQpKTsKIAogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoYmFzZVZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgWyZdIChi
b29sIGZvdW5kLCBQcm9wZXJ0eVNsb3QmIHNsb3QpIC0+IEpTVmFsdWUgeworICAgICAgICBib29s
IHdpbGxEb1NpZGVFZmZlY3RzID0gIShzbG90LmlzVmFsdWUoKSB8fCBzbG90LmlzVW5zZXQoKSkg
fHwgc2xvdC5pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOworICAgICAgICBzdHViSW5mby0+ZGlk
U2lkZUVmZmVjdHMgfD0gd2lsbERvU2lkZUVmZmVjdHM7CisKICAgICAgICAgaWYgKHN0dWJJbmZv
LT5jb25zaWRlckNhY2hpbmcoYmFzZVZhbHVlLnN0cnVjdHVyZU9yTnVsbCgpKSkKICAgICAgICAg
ICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5m
bywgR2V0QnlJREtpbmQ6Ok5vcm1hbCk7CiAgICAgICAgIHJldHVybiBmb3VuZCA/IHNsb3QuZ2V0
VmFsdWUoZXhlYywgaWRlbnQpIDoganNVbmRlZmluZWQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzMw
LDYgKzMzMCw5IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBvcGVyYXRpb25Db25zdHJ1Y3QKIEVu
Y29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5R2V0QnlJZChFeGVjU3RhdGUq
LCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3RyaW5nSW1wbCop
IFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVHJ5
R2V0QnlJZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJ
bXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25UcnlHZXRCeUlkT3B0aW1pemUoRXhlY1N0YXRlKiwgU3RydWN0dXJlU3R1YkluZm8qLCBFbmNv
ZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7CitFbmNvZGVkSlNW
YWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1cmVHZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVj
dHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lO
VEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJlR2V0QnlJ
ZEdlbmVyaWMoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikg
V1RGX0lOVEVSTkFMOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXJl
R2V0QnlJZE9wdGltaXplKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJbmZvKiwgRW5jb2RlZEpT
VmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkKEV4ZWNTdGF0ZSosIFN0cnVjdHVyZVN0dWJJ
bmZvKiwgRW5jb2RlZEpTVmFsdWUsIFVuaXF1ZWRTdHJpbmdJbXBsKikgV1RGX0lOVEVSTkFMOwog
RW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeUlkR2VuZXJpYyhFeGVj
U3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgVW5pcXVlZFN0cmluZ0ltcGwqKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5SWRPcHRpbWl6ZShF
eGVjU3RhdGUqLCBTdHJ1Y3R1cmVTdHViSW5mbyosIEVuY29kZWRKU1ZhbHVlLCBVbmlxdWVkU3Ry
aW5nSW1wbCopIFdURl9JTlRFUk5BTDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkocmV2aXNpb24gMjA4MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgSklUOjplbWl0X29wX3RyeV9n
ZXRfYnlfaWQoSW5zdHJ1Y3QKIAogICAgIEpJVEdldEJ5SWRHZW5lcmF0b3IgZ2VuKAogICAgICAg
ICBtX2NvZGVCbG9jaywgQ29kZU9yaWdpbihtX2J5dGVjb2RlT2Zmc2V0KSwgQ2FsbFNpdGVJbmRl
eChjdXJyZW50SW5zdHJ1Y3Rpb24pLCBSZWdpc3RlclNldDo6c3R1YlVuYXZhaWxhYmxlUmVnaXN0
ZXJzKCksCi0gICAgICAgIGlkZW50LT5pbXBsKCksIEpTVmFsdWVSZWdzOjpwYXlsb2FkT25seShy
ZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QxLCByZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOwor
ICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1ZhbHVlUmVnczo6cGF5bG9hZE9ubHkocmVnVDApLCBK
U1ZhbHVlUmVncyhyZWdUMSwgcmVnVDApLCBBY2Nlc3NUeXBlOjpUcnlHZXQpOwogICAgIGdlbi5n
ZW5lcmF0ZUZhc3RQYXRoKCp0aGlzKTsKICAgICBhZGRTbG93Q2FzZShnZW4uc2xvd1BhdGhKdW1w
KCkpOwogICAgIG1fZ2V0QnlJZHMuYXBwZW5kKGdlbik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAkocmV2aXNpb24gMjA4MDk5KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3OSw3ICs1NzksNyBAQCB2b2lkIEpJVDo6ZW1pdF9vcF90cnlfZ2V0X2J5
X2lkKEluc3RydWN0CiAKICAgICBKSVRHZXRCeUlkR2VuZXJhdG9yIGdlbigKICAgICAgICAgbV9j
b2RlQmxvY2ssIENvZGVPcmlnaW4obV9ieXRlY29kZU9mZnNldCksIENhbGxTaXRlSW5kZXgobV9i
eXRlY29kZU9mZnNldCksIFJlZ2lzdGVyU2V0OjpzdHViVW5hdmFpbGFibGVSZWdpc3RlcnMoKSwK
LSAgICAgICAgaWRlbnQtPmltcGwoKSwgSlNWYWx1ZVJlZ3MocmVnVDApLCBKU1ZhbHVlUmVncyhy
ZWdUMCksIEFjY2Vzc1R5cGU6OkdldFB1cmUpOworICAgICAgICBpZGVudC0+aW1wbCgpLCBKU1Zh
bHVlUmVncyhyZWdUMCksIEpTVmFsdWVSZWdzKHJlZ1QwKSwgQWNjZXNzVHlwZTo6VHJ5R2V0KTsK
ICAgICBnZW4uZ2VuZXJhdGVGYXN0UGF0aCgqdGhpcyk7CiAgICAgYWRkU2xvd0Nhc2UoZ2VuLnNs
b3dQYXRoSnVtcCgpKTsKICAgICBtX2dldEJ5SWRzLmFwcGVuZChnZW4pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCShyZXZpc2lvbiAyMDgwOTkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsMTYg
KzEzNCwzNCBAQCBzdGF0aWMgYm9vbCBmb3JjZUlDRmFpbHVyZShFeGVjU3RhdGUqKQogCiBpbmxp
bmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlT3B0aW1pemluZ0dldEJ5SWRGdW5j
dGlvbihHZXRCeUlES2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpO
b3JtYWwpCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFs
OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwotICAgIHJldHVybiBv
cGVyYXRpb25UcnlHZXRCeUlkT3B0aW1pemU7CisgICAgY2FzZSBHZXRCeUlES2luZDo6VHJ5Ogor
ICAgICAgICByZXR1cm4gb3BlcmF0aW9uVHJ5R2V0QnlJZE9wdGltaXplOworICAgIGNhc2UgR2V0
QnlJREtpbmQ6OlB1cmU6CisgICAgICAgIHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZE9wdGlt
aXplOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZE9wdGltaXplOwogfQogCiBp
bmxpbmUgSl9KSVRPcGVyYXRpb25fRVNzaUpJIGFwcHJvcHJpYXRlR2VuZXJpY0dldEJ5SWRGdW5j
dGlvbihHZXRCeUlES2luZCBraW5kKQogewotICAgIGlmIChraW5kID09IEdldEJ5SURLaW5kOjpO
b3JtYWwpCisgICAgc3dpdGNoIChraW5kKSB7CisgICAgY2FzZSBHZXRCeUlES2luZDo6Tm9ybWFs
OgogICAgICAgICByZXR1cm4gb3BlcmF0aW9uR2V0QnlJZDsKLSAgICByZXR1cm4gb3BlcmF0aW9u
VHJ5R2V0QnlJZDsKKyAgICBjYXNlIEdldEJ5SURLaW5kOjpUcnk6CisgICAgICAgIHJldHVybiBv
cGVyYXRpb25UcnlHZXRCeUlkOworICAgIGNhc2UgR2V0QnlJREtpbmQ6OlB1cmU6CisgICAgICAg
IHJldHVybiBvcGVyYXRpb25QdXJlR2V0QnlJZDsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVh
azsKKyAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIG9wZXJhdGlv
bkdldEJ5SWQ7CiB9CiAKIHN0YXRpYyBJbmxpbmVDYWNoZUFjdGlvbiB0cnlDYWNoZUdldEJ5SUQo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QsIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbywgR2V0QnlJREtpbmQga2luZCkKQEAgLTI3MSw2ICsyODksMTYgQEAgc3RhdGljIElu
bGluZUNhY2hlQWN0aW9uIHRyeUNhY2hlR2V0QnlJRAogICAgICAgICAgICAgICAgIHR5cGUgPSBB
Y2Nlc3NDYXNlOjpMb2FkOwogICAgICAgICAgICAgZWxzZSBpZiAoc2xvdC5pc1Vuc2V0KCkpCiAg
ICAgICAgICAgICAgICAgdHlwZSA9IEFjY2Vzc0Nhc2U6Ok1pc3M7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAg
ICAgICAgbmV3Q2FzZSA9IEFjY2Vzc0Nhc2U6OnRyeUdldCh2bSwgY29kZUJsb2NrLCB0eXBlLCBv
ZmZzZXQsIHN0cnVjdHVyZSwgY29uZGl0aW9uU2V0LCBsb2FkVGFyZ2V0RnJvbVByb3h5LCBzbG90
LndhdGNocG9pbnRTZXQoKSk7CisgICAgICAgIH0gZWxzZSBpZiAoa2luZCA9PSBHZXRCeUlES2lu
ZDo6VHJ5KSB7CisgICAgICAgICAgICBBY2Nlc3NDYXNlOjpBY2Nlc3NUeXBlIHR5cGU7CisgICAg
ICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkpCisgICAgICAgICAgICAgICAgdHlw
ZSA9IEFjY2Vzc0Nhc2U6OkxvYWQ7CisgICAgICAgICAgICBlbHNlIGlmIChzbG90LmlzVW5zZXQo
KSkKKyAgICAgICAgICAgICAgICB0eXBlID0gQWNjZXNzQ2FzZTo6TWlzczsKICAgICAgICAgICAg
IGVsc2UgaWYgKHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSkKICAgICAgICAgICAgICAgICB0eXBl
ID0gQWNjZXNzQ2FzZTo6R2V0R2V0dGVyOwogICAgICAgICAgICAgZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9SZXBhdGNoLmgJKHJldmlzaW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBlbnVtIGNsYXNzIEdldEJ5SURLaW5kIHsKICAgICBOb3JtYWws
CisgICAgVHJ5LAogICAgIFB1cmUKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJKZXR0aXNvblJlYXNvbi5jcHAJKHJldmlz
aW9uIDIwODA5OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckpl
dHRpc29uUmVhc29uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsOSBAQCB2b2lkIHBy
aW50SW50ZXJuYWwoUHJpbnRTdHJlYW0mIG91dCwgSmV0CiAgICAgY2FzZSBKZXR0aXNvbkR1ZVRv
T1NSRXhpdDoKICAgICAgICAgb3V0LnByaW50KCJPU1JFeGl0Iik7CiAgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIEpldHRpc29uRHVlVG9QdXJlR2V0QnlJZEVmZmVjdHM6CisgICAgICAgIG91dC5w
cmludCgiUHVyZUdldEJ5SWRFZmZlY3RzIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEpl
dHRpc29uRHVlVG9Qcm9maWxlZFdhdGNocG9pbnQ6CiAgICAgICAgIG91dC5wcmludCgiUHJvZmls
ZWRXYXRjaHBvaW50Iik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckpldHRpc29uUmVhc29uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVySmV0dGlzb25SZWFzb24uaAkocmV2
aXNpb24gMjA4MDk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVy
SmV0dGlzb25SZWFzb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBlbnVtIEpl
dHRpc29uUmVhc29uIHsKICAgICBKZXR0aXNvbkR1ZVRvQmFzZWxpbmVMb29wUmVvcHRpbWl6YXRp
b25UcmlnZ2VyLAogICAgIEpldHRpc29uRHVlVG9CYXNlbGluZUxvb3BSZW9wdGltaXphdGlvblRy
aWdnZXJPbk9TUkVudHJ5RmFpbCwKICAgICBKZXR0aXNvbkR1ZVRvT1NSRXhpdCwKKyAgICBKZXR0
aXNvbkR1ZVRvUHVyZUdldEJ5SWRFZmZlY3RzLAogICAgIEpldHRpc29uRHVlVG9Qcm9maWxlZFdh
dGNocG9pbnQsCiAgICAgSmV0dGlzb25EdWVUb1VucHJvZmlsZWRXYXRjaHBvaW50LAogICAgIEpl
dHRpc29uRHVlVG9PbGRBZ2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>