<?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>195924</bug_id>
          
          <creation_ts>2019-03-18 18:23:52 -0700</creation_ts>
          <short_desc>FTL: Emit code to validate AI&apos;s state when running the compiled code</short_desc>
          <delta_ts>2019-03-26 17:08:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=195980</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=195981</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=196030</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>guijemont</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1518046</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-18 18:23:52 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518056</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-18 18:40:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/49003422&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518612</commentid>
    <comment_count>2</comment_count>
      <attachid>365252</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 16:19:35 -0700</bug_when>
    <thetext>Created attachment 365252
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518616</commentid>
    <comment_count>3</comment_count>
      <attachid>365255</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 16:24:05 -0700</bug_when>
    <thetext>Created attachment 365255
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518633</commentid>
    <comment_count>4</comment_count>
      <attachid>365261</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 16:40:09 -0700</bug_when>
    <thetext>Created attachment 365261
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518637</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 16:51:19 -0700</bug_when>
    <thetext>seems possible it&apos;s already found some bugs...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518647</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 17:10:28 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; seems possible it&apos;s already found some bugs...

Perhaps not. It seems like using combined liveness may not work, since AI only tracks live in IR values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518650</commentid>
    <comment_count>7</comment_count>
      <attachid>365267</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 17:14:47 -0700</bug_when>
    <thetext>Created attachment 365267
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518680</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 18:12:26 -0700</bug_when>
    <thetext>It found a bug:

```
    case ValueBitXor:
    case ValueBitAnd:
    case ValueBitOr:
        if (node-&gt;binaryUseKind() == BigIntUse)
            setTypeForNode(node, SpecBigInt);
        else {
            clobberWorld();
            setTypeForNode(node, SpecBoolInt32 | SpecBigInt);
        }
        break;

```

Should be:
```
    case ValueBitXor:
    case ValueBitAnd:
    case ValueBitOr:
        if (node-&gt;binaryUseKind() == BigIntUse)
            setTypeForNode(node, SpecBigInt);
        else {
            clobberWorld();
            setTypeForNode(node, SpecInt32Only | SpecBigInt);
        }
        break;
````</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518700</commentid>
    <comment_count>9</comment_count>
      <attachid>365284</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 18:46:03 -0700</bug_when>
    <thetext>Created attachment 365284
patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518712</commentid>
    <comment_count>10</comment_count>
      <attachid>365288</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 19:21:31 -0700</bug_when>
    <thetext>Created attachment 365288
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518719</commentid>
    <comment_count>11</comment_count>
      <attachid>365293</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-19 19:38:56 -0700</bug_when>
    <thetext>Created attachment 365293
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1519385</commentid>
    <comment_count>12</comment_count>
      <attachid>365457</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-20 18:30:47 -0700</bug_when>
    <thetext>Created attachment 365457
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521072</commentid>
    <comment_count>13</comment_count>
      <attachid>365910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-25 15:44:38 -0700</bug_when>
    <thetext>Created attachment 365910
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521079</commentid>
    <comment_count>14</comment_count>
      <attachid>365910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-25 16:01:17 -0700</bug_when>
    <thetext>Comment on attachment 365910
patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:177
&gt; +                        live.add(child.node());

I’ll also make this addVoid</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521082</commentid>
    <comment_count>15</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-25 16:02:56 -0700</bug_when>
    <thetext>Attachment 365910 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:12:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzer  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 3 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>1521122</commentid>
    <comment_count>16</comment_count>
      <attachid>365910</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-25 16:57:27 -0700</bug_when>
    <thetext>Comment on attachment 365910
patch

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

&gt; Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:597
&gt; +                input = boxDouble(lowDouble(Edge(node, DoubleRepUse)));

this logic is somewhat wrong for doubles. I think I need to validate them unboxed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521134</commentid>
    <comment_count>17</comment_count>
      <attachid>365926</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2019-03-25 17:23:40 -0700</bug_when>
    <thetext>Created attachment 365926
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521137</commentid>
    <comment_count>18</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-03-25 17:27:49 -0700</bug_when>
    <thetext>Attachment 365926 did not pass style-queue:


ERROR: Source/JavaScriptCore/ChangeLog:12:  Please consider whether the use of security-sensitive phrasing could help someone exploit WebKit: fuzzer  [changelog/unwantedsecurityterms] [3]
Total errors found: 1 in 3 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>1521541</commentid>
    <comment_count>19</comment_count>
      <attachid>365926</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-26 17:08:52 -0700</bug_when>
    <thetext>Comment on attachment 365926
patch

Clearing flags on attachment: 365926

Committed r243530: &lt;https://trac.webkit.org/changeset/243530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521542</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-03-26 17:08:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365252</attachid>
            <date>2019-03-19 16:19:35 -0700</date>
            <delta_ts>2019-03-19 16:24:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>5218</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRG
R0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAgLTgyLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFw
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2ICsxNTcsNDgg
QEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUp
CiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNwZWN0cmVNaXRp
Z2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdEaXNhYmxlZCkK
ICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJT
dGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsK
KworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBsaXZlOworCisg
ICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2Et
PmxpdmVBdEhlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2luZCgpID09IE5v
ZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmUu
YWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxk
cmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGl2
ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZVNldCYgbGl2ZSA9IG1fbGl2ZUluVG9Ob2RlLmZpbmQobm9kZSktPnZhbHVlOworCisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZm9yQWxsTGl2ZUluQnl0ZWNvZGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcmlnaW4uZm9yRXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5tX2F2YWlsYWJpbGl0eS5jbG9zZVN0YXJ0aW5nV2l0
aExvY2FsKHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBu
b2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsaXZlLmNvbnRhaW5zKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIG5vZGUpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpdmUuYWRk
KG5vZGUpLmlzTmV3RW50cnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9hdmFp
bGFiaWxpdHlDYWxjdWxhdG9yLmV4ZWN1dGVOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2b2lkIGxvd2VyKCkK
QEAgLTUwOCw2ICs1NTIsMjggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgdmFsaWRhdGVBSVN0YXRlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBCZWZvcmUg
d2UgZXhlY3V0ZSBub2RlLgorICAgICAgICBOb2RlU2V0JiBsaXZlID0gbV9saXZlSW5Ub05vZGUu
ZmluZChub2RlKS0+dmFsdWU7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA6IGxpdmUpIHsKKyAg
ICAgICAgICAgIGlmICghbm9kZS0+aGFzSlNSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsgLy8gT09QUworCisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV9pbnRl
cnByZXRlci5mb3JOb2RlKG5vZGUpLm1fdHlwZTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIobG93SlNWYWx1ZShFZGdlKG5vZGUsIFVudHlwZWRV
c2UpKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgcmVnID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAg
ICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29udGV4dC5ncHIocmVn
KSk7IAorICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBzcGVj
dWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCh2YWx1ZVR5cGUgfCB0eXBlKSA9PSB0eXBlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBjb21waWxlTm9kZSh1
bnNpZ25lZCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIW1fc3RhdGUuaXNWYWxpZCgp
KSB7CkBAIC01MjcsNiArNTkzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnRlcnByZXRlci5z
dGFydEV4ZWN1dGluZygpOwogICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGVLbm93bkVkZ2VU
eXBlcyhtX25vZGUpOwogCisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50
ZXJwcmV0ZXJTdGF0ZSgpKQorICAgICAgICAgICAgdmFsaWRhdGVBSVN0YXRlKG1fbm9kZSk7CisK
ICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgICAgICBib29sIGV4cGVj
dERvZXNHQyA9IGRvZXNHQyhtX2dyYXBoLCBtX25vZGUpOwogICAgICAgICAgICAgbV9vdXQuc3Rv
cmUobV9vdXQuY29uc3RCb29sKGV4cGVjdERvZXNHQyksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVh
cC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSkpOwpAQCAtMTcxOTksNiArMTcyNjgsOCBAQCBwcml2
YXRlOgogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7
CiAgICAgTm9kZSogbV9ub2RlOworCisgICAgSGFzaE1hcDxOb2RlKiwgTm9kZVNldD4gbV9saXZl
SW5Ub05vZGU7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEw
LDYgKzUxMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAg
ICB2KHVuc2lnbmVkLCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCBVSU5U
X01BWCwgTm9ybWFsLCAiVGhyZXNob2xkIGZvciBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2No
LiBJZiB0aGUgZXBvY2ggcmVhY2hlcyB0byB0aGlzIHZhbHVlLCBDb2RlQmxvY2sgbWV0YWRhdGEg
Zm9yIHNjb3BlIG9wZXJhdGlvbnMgd2lsbCBiZSByZXZpc2VkIGdsb2JhbGx5LiBJdCBuZWVkcyB0
byBiZSBncmVhdGVyIHRoYW4gMS4iKSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGRpc2tDYWNoZVBh
dGgsIG51bGxwdHIsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGZvcmNlRGlz
a0NhY2hlLCBmYWxzZSwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgdmFsaWRh
dGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBc
CiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365255</attachid>
            <date>2019-03-19 16:24:05 -0700</date>
            <delta_ts>2019-03-19 16:40:09 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>5694</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRG
R0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAgLTgyLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFw
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2ICsxNTcsNDgg
QEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUp
CiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNwZWN0cmVNaXRp
Z2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdEaXNhYmxlZCkK
ICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJT
dGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsK
KworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBsaXZlOworCisg
ICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2Et
PmxpdmVBdFRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2luZCgpID09IE5v
ZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmUu
YWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxk
cmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGl2
ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZVNldCYgbGl2ZSA9IG1fbGl2ZUluVG9Ob2RlLmZpbmQobm9kZSktPnZhbHVlOworCisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZm9yQWxsTGl2ZUluQnl0ZWNvZGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcmlnaW4uZm9yRXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5tX2F2YWlsYWJpbGl0eS5jbG9zZVN0YXJ0aW5nV2l0
aExvY2FsKHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBu
b2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsaXZlLmNvbnRhaW5zKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIG5vZGUpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpdmUuYWRk
KG5vZGUpLmlzTmV3RW50cnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9hdmFp
bGFiaWxpdHlDYWxjdWxhdG9yLmV4ZWN1dGVOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2b2lkIGxvd2VyKCkK
QEAgLTUwOCw2ICs1NTIsMjggQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgdmFsaWRhdGVBSVN0YXRlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBCZWZvcmUg
d2UgZXhlY3V0ZSBub2RlLgorICAgICAgICBOb2RlU2V0JiBsaXZlID0gbV9saXZlSW5Ub05vZGUu
ZmluZChub2RlKS0+dmFsdWU7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA6IGxpdmUpIHsKKyAg
ICAgICAgICAgIGlmICghbm9kZS0+aGFzSlNSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsgLy8gT09QUworCisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV9pbnRl
cnByZXRlci5mb3JOb2RlKG5vZGUpLm1fdHlwZTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1
ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIobG93SlNWYWx1ZShFZGdlKG5vZGUsIFVudHlwZWRV
c2UpKSk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhl
bHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgcmVnID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAg
ICAgIGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAg
ICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29udGV4dC5ncHIocmVn
KSk7IAorICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBzcGVj
dWxhdGlvbkZyb21WYWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCh2YWx1ZVR5cGUgfCB0eXBlKSA9PSB0eXBlKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9vbCBjb21waWxlTm9kZSh1
bnNpZ25lZCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIW1fc3RhdGUuaXNWYWxpZCgp
KSB7CkBAIC01MjcsNiArNTkzLDkgQEAgcHJpdmF0ZToKICAgICAgICAgbV9pbnRlcnByZXRlci5z
dGFydEV4ZWN1dGluZygpOwogICAgICAgICBtX2ludGVycHJldGVyLmV4ZWN1dGVLbm93bkVkZ2VU
eXBlcyhtX25vZGUpOwogCisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50
ZXJwcmV0ZXJTdGF0ZSgpKQorICAgICAgICAgICAgdmFsaWRhdGVBSVN0YXRlKG1fbm9kZSk7CisK
ICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAgICAgICBib29sIGV4cGVj
dERvZXNHQyA9IGRvZXNHQyhtX2dyYXBoLCBtX25vZGUpOwogICAgICAgICAgICAgbV9vdXQuc3Rv
cmUobV9vdXQuY29uc3RCb29sKGV4cGVjdERvZXNHQyksIG1fb3V0LmFic29sdXRlKHZtKCkuaGVh
cC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSkpOwpAQCAtMTcxOTksNiArMTcyNjgsOCBAQCBwcml2
YXRlOgogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7
CiAgICAgTm9kZSogbV9ub2RlOworCisgICAgSGFzaE1hcDxOb2RlKiwgTm9kZVNldD4gbV9saXZl
SW5Ub05vZGU7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNDMxNTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzg2LDYgKzM4Niw4IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RPcHRpb25zKCkKIAogc3RhdGlj
IHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiB7CisgICAgT3B0aW9uczo6dmFsaWRh
dGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSA9IDE7CisKICNpZiAhZGVmaW5lZChOREVCVUcp
CiAgICAgT3B0aW9uczo6dmFsaWRhdGVERkdFeGNlcHRpb25IYW5kbGluZygpID0gdHJ1ZTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNp
b24gMjQzMTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3
b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2Vi
QXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5zaWduZWQsIHRocmVzaG9sZEZvckdsb2JhbExleGlj
YWxCaW5kaW5nRXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJlc2hvbGQgZm9yIGdsb2JhbCBs
ZXhpY2FsIGJpbmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMgdmFsdWUs
IENvZGVCbG9jayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJldmlzZWQg
Z2xvYmFsbHkuIEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwKICAgICB2KG9wdGlv
blN0cmluZywgZGlza0NhY2hlUGF0aCwgbnVsbHB0ciwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAog
ICAgIHYoYm9vbCwgZm9yY2VEaXNrQ2FjaGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBc
CisgICAgdihib29sLCB2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZSwgZmFsc2UsIFJl
c3RyaWN0ZWQsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365261</attachid>
            <date>2019-03-19 16:40:09 -0700</date>
            <delta_ts>2019-03-19 17:14:47 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>6282</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRG
R0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAgLTgyLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFw
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2ICsxNTcsNDgg
QEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUp
CiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNwZWN0cmVNaXRp
Z2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdEaXNhYmxlZCkK
ICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJT
dGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsK
KworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBsaXZlOworCisg
ICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2Et
PmxpdmVBdFRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2luZCgpID09IE5v
ZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmUu
YWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxk
cmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGl2
ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBi
bG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAg
ICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9k
ZVNldCYgbGl2ZSA9IG1fbGl2ZUluVG9Ob2RlLmZpbmQobm9kZSktPnZhbHVlOworCisgICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGguZm9yQWxsTGl2ZUluQnl0ZWNvZGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5vcmlnaW4uZm9yRXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5tX2F2YWlsYWJpbGl0eS5jbG9zZVN0YXJ0aW5nV2l0
aExvY2FsKHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBu
b2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBsaXZlLmNvbnRhaW5zKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIG5vZGUpIC0+IGJv
b2wgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpdmUuYWRk
KG5vZGUpLmlzTmV3RW50cnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9hdmFp
bGFiaWxpdHlDYWxjdWxhdG9yLmV4ZWN1dGVOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2b2lkIGxvd2VyKCkK
QEAgLTUwOCw2ICs1NTIsNDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgdmFsaWRhdGVBSVN0YXRlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICAvLyBCZWZvcmUg
d2UgZXhlY3V0ZSBub2RlLgorICAgICAgICBOb2RlU2V0JiBsaXZlID0gbV9saXZlSW5Ub05vZGUu
ZmluZChub2RlKS0+dmFsdWU7CisgICAgICAgIC8vZGF0YUxvZ0xuKCJIYW5kbGluZyBub2RlICIs
IG5vZGUtPmluZGV4KCkpOworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiBsaXZlKSB7CisgICAg
ICAgICAgICBpZiAobm9kZS0+aXNQaGFudG9tQWxsb2NhdGlvbigpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoIW5vZGUtPmhhc0pTUmVzdWx0KCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7IC8vIE9PUFMKKworICAgICAgICAgICAgLy9kYXRhTG9nTG4o
IiAgIGxpdmUgbm9kZSAiLCBub2RlLT5pbmRleCgpKTsKKworICAgICAgICAgICAgTFZhbHVlIGlu
cHV0ID0gbG93SlNWYWx1ZShFZGdlKG5vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSkubV90eXBlOwor
ICAgICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2lu
dChWb2lkKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmFwcGVuZFNvbWVSZWdpc3RlcihpbnB1
dCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5zZXRHZW5lcmF0b3IoWz1dIChDQ2FsbEhlbHBl
cnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKKyAgICAg
ICAgICAgICAgICBHUFJSZWcgcmVnID0gcGFyYW1zWzBdLmdwcigpOworICAgICAgICAgICAgICAg
IGppdC5wcm9iZShbPV0gKFByb2JlOjpDb250ZXh0JiBjb250ZXh0KSB7CisgICAgICAgICAgICAg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29udGV4dC5ncHIocmVnKSk7
IAorICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB2YWx1ZVR5cGUgPSBzcGVjdWxh
dGlvbkZyb21WYWx1ZSh2YWx1ZSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCh2YWx1ZVR5
cGUgfCB0eXBlKSAhPSB0eXBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJ2
YWx1ZVR5cGUgPSAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBTcGVjdWxhdGlvbihX
VEY6OmRhdGFGaWxlKCksIHZhbHVlVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRh
TG9nKCJcbiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJ0eXBlID0gIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgp
LCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCiAgICAg
Ym9vbCBjb21waWxlTm9kZSh1bnNpZ25lZCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAo
IW1fc3RhdGUuaXNWYWxpZCgpKSB7CkBAIC01MjcsNiArNjExLDkgQEAgcHJpdmF0ZToKICAgICAg
ICAgbV9pbnRlcnByZXRlci5zdGFydEV4ZWN1dGluZygpOwogICAgICAgICBtX2ludGVycHJldGVy
LmV4ZWN1dGVLbm93bkVkZ2VUeXBlcyhtX25vZGUpOwogCisgICAgICAgIGlmIChPcHRpb25zOjp2
YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZSgpKQorICAgICAgICAgICAgdmFsaWRhdGVB
SVN0YXRlKG1fbm9kZSk7CisKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAg
ICAgICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRvZXNHQyhtX2dyYXBoLCBtX25vZGUpOwogICAg
ICAgICAgICAgbV9vdXQuc3RvcmUobV9vdXQuY29uc3RCb29sKGV4cGVjdERvZXNHQyksIG1fb3V0
LmFic29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSkpOwpAQCAtMTcxOTks
NiArMTcyODYsOCBAQCBwcml2YXRlOgogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgdW5z
aWduZWQgbV9ub2RlSW5kZXg7CiAgICAgTm9kZSogbV9ub2RlOworCisgICAgSGFzaE1hcDxOb2Rl
KiwgTm9kZVNldD4gbV9saXZlSW5Ub05vZGU7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3Bh
Y2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZp
c2lvbiAyNDMxNTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzg2LDYgKzM4Niw4IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RP
cHRpb25zKCkKIAogc3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiB7Cisg
ICAgT3B0aW9uczo6dmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSA9IDE7CisKICNp
ZiAhZGVmaW5lZChOREVCVUcpCiAgICAgT3B0aW9uczo6dmFsaWRhdGVERkdFeGNlcHRpb25IYW5k
bGluZygpID0gdHJ1ZTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkocmV2aXNpb24gMjQzMTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgY29uc3Rl
eHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5zaWduZWQsIHRocmVz
aG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJl
c2hvbGQgZm9yIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFj
aGVzIHRvIHRoaXMgdmFsdWUsIENvZGVCbG9jayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9u
cyB3aWxsIGJlIHJldmlzZWQgZ2xvYmFsbHkuIEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAx
LiIpIFwKICAgICB2KG9wdGlvblN0cmluZywgZGlza0NhY2hlUGF0aCwgbnVsbHB0ciwgUmVzdHJp
Y3RlZCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZm9yY2VEaXNrQ2FjaGUsIGZhbHNlLCBSZXN0
cmljdGVkLCBudWxscHRyKSBcCisgICAgdihib29sLCB2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0
ZXJTdGF0ZSwgZmFsc2UsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVx
dWl2YWxlbmNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365267</attachid>
            <date>2019-03-19 17:14:47 -0700</date>
            <delta_ts>2019-03-19 18:46:03 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>7249</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRG
R0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAgLTgyLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFw
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2ICsxNTcsNTAg
QEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUp
CiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNwZWN0cmVNaXRp
Z2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdEaXNhYmxlZCkK
ICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJT
dGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsK
KworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBsaXZlOworCisg
ICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2Et
PmxpdmVBdFRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2luZCgpID09IE5v
ZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmUu
YWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxk
cmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGl2
ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKERG
Rzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsK
KyAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IuYmVnaW5CbG9jayhibG9j
ayk7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBtX2xpdmVJblRvTm9kZS5maW5kKG5vZGUpLT52
YWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZvckFsbExpdmVJbkJ5dGVjb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLmZvckV4aXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHku
Y2xvc2VTdGFydGluZ1dpdGhMb2NhbChyZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsmXSAoTm9kZSogbm9kZSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbGl2ZS5jb250YWlucyhub2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChO
b2RlKiBub2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsaXZlLmFkZChub2RlKS5pc05ld0VudHJ5OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5leGVjdXRlTm9kZShub2RlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqLworICAgICAgICB9
CiAgICAgfQogICAgIAogICAgIHZvaWQgbG93ZXIoKQpAQCAtNTA4LDYgKzU1NCw2NiBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB2YWxpZGF0ZUFJU3RhdGUoTm9kZSog
bm9kZSkKKyAgICB7CisgICAgICAgIGlmICghbV9ncmFwaER1bXApIHsKKyAgICAgICAgICAgIFN0
cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgICAgIG1fZ3JhcGguZHVtcChvdXQpOworICAg
ICAgICAgICAgbV9ncmFwaER1bXAgPSBvdXQudG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEJlZm9yZSB3ZSBleGVjdXRlIG5vZGUuCisgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBt
X2xpdmVJblRvTm9kZS5maW5kKG5vZGUpLT52YWx1ZTsKKyAgICAgICAgLy9kYXRhTG9nTG4oIkhh
bmRsaW5nIG5vZGUgIiwgbm9kZS0+aW5kZXgoKSk7CisgICAgICAgIHVuc2lnbmVkIGhpZ2hQYXJl
bnRJbmRleCA9IG5vZGUtPmluZGV4KCk7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA6IGxpdmUp
IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghbm9kZS0+aGFzSlNSZXN1bHQo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gT09QUworCisgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzKSB7CisgICAgICAgICAgICAgICAgLy8gT09QUzog
dWdoLi4uCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGhpZ2hDaGlsZEluZGV4ID0gbm9kZS0+aW5kZXgoKTsKKworICAgICAg
ICAgICAgLy9kYXRhTG9nTG4oIiAgIGxpdmUgbm9kZSAiLCBub2RlLT5pbmRleCgpKTsKKworICAg
ICAgICAgICAgU3RyaW5nIGR1bXAgPSBtX2dyYXBoRHVtcDsKKyAgICAgICAgICAgIExWYWx1ZSBp
bnB1dCA9IGxvd0pTVmFsdWUoRWRnZShub2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICBT
cGVjdWxhdGVkVHlwZSB0eXBlID0gbV9pbnRlcnByZXRlci5mb3JOb2RlKG5vZGUpLm1fdHlwZTsK
KyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9p
bnQoVm9pZCk7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5w
dXQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxw
ZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAg
ICAgICAgICAgICAgR1BSUmVnIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAg
ICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAg
ICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnRleHQuZ3ByKHJlZykp
OyAKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgdmFsdWVUeXBlID0gc3BlY3Vs
YXRpb25Gcm9tVmFsdWUodmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgIGlmICgodmFsdWVU
eXBlIHwgdHlwZSkgIT0gdHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xu
KCJoaWdoUGFyZW50SW5kZXg6ICIsIGhpZ2hQYXJlbnRJbmRleCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nTG4oImhpZ2hDaGlsZEluZGV4OiAiLCBoaWdoQ2hpbGRJbmRleCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coInZhbHVlVHlwZSA9ICIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZHVtcFNwZWN1bGF0aW9uKFdURjo6ZGF0YUZpbGUoKSwgdmFsdWVU
eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coInR5cGUgPSAiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGR1bXBTcGVjdWxhdGlvbihXVEY6OmRhdGFGaWxlKCksIHR5cGUpOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZ0xuKGR1bXApOworCisgICAgICAgICAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgY29tcGlsZU5vZGUodW5zaWduZWQgbm9kZUluZGV4
KQogICAgIHsKICAgICAgICAgaWYgKCFtX3N0YXRlLmlzVmFsaWQoKSkgewpAQCAtNTI3LDYgKzYz
Myw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuc3RhcnRFeGVjdXRpbmcoKTsK
ICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlS25vd25FZGdlVHlwZXMobV9ub2RlKTsKIAor
ICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSkK
KyAgICAgICAgICAgIHZhbGlkYXRlQUlTdGF0ZShtX25vZGUpOworCiAgICAgICAgIGlmICh2YWxp
ZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBleHBlY3REb2VzR0MgPSBkb2VzR0Mo
bV9ncmFwaCwgbV9ub2RlKTsKICAgICAgICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0Qm9v
bChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRXhwZWN0
RG9lc0dDKCkpKTsKQEAgLTE1MTczLDcgKzE1MjgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIERGR19DUkFTSCht
X2dyYXBoLCBtX25vZGUsICJWYWx1ZSBub3QgZGVmaW5lZCIpOworICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCBtYWtlU3RyaW5nKCJWYWx1ZSBub3QgZGVmaW5lZDogIiwgU3RyaW5n
OjpudW1iZXIoZWRnZS5ub2RlKCktPmluZGV4KCkpKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIApAQCAtMTcxOTksNiArMTczMDgsOSBAQCBwcml2YXRlOgogICAg
IE5vZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7CiAgICAgTm9k
ZSogbV9ub2RlOworCisgICAgSGFzaE1hcDxOb2RlKiwgTm9kZVNldD4gbV9saXZlSW5Ub05vZGU7
CisgICAgU3RyaW5nIG1fZ3JhcGhEdW1wOwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNp
b24gMjQzMTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4Niw2ICszODYsOCBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0T3B0
aW9ucygpCiAKIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogeworICAg
IE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlKCkgPSAxOworCiAjaWYg
IWRlZmluZWQoTkRFQlVHKQogICAgIE9wdGlvbnM6OnZhbGlkYXRlREZHRXhjZXB0aW9uSGFuZGxp
bmcoKSA9IHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIGNvbnN0ZXhw
ciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCB0aHJlc2hv
bGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCBVSU5UX01BWCwgTm9ybWFsLCAiVGhyZXNo
b2xkIGZvciBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJZiB0aGUgZXBvY2ggcmVhY2hl
cyB0byB0aGlzIHZhbHVlLCBDb2RlQmxvY2sgbWV0YWRhdGEgZm9yIHNjb3BlIG9wZXJhdGlvbnMg
d2lsbCBiZSByZXZpc2VkIGdsb2JhbGx5LiBJdCBuZWVkcyB0byBiZSBncmVhdGVyIHRoYW4gMS4i
KSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGRpc2tDYWNoZVBhdGgsIG51bGxwdHIsIFJlc3RyaWN0
ZWQsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGZvcmNlRGlza0NhY2hlLCBmYWxzZSwgUmVzdHJp
Y3RlZCwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgdmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVy
U3RhdGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVp
dmFsZW5jZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365284</attachid>
            <date>2019-03-19 18:46:03 -0700</date>
            <delta_ts>2019-03-19 19:21:31 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>8674</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkRG
R0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRlICJERkdJblBs
YWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlzaXNQaGFzZS5o
IgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFpbGFiaWxpdHlB
bmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAgLTgyLDYgKzgz
LDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTTWFw
LmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJvYmVDb250ZXh0
LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRz
LmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2ICsxNTcsNTAg
QEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgsIG1fc3RhdGUp
CiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNwZWN0cmVNaXRp
Z2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdEaXNhYmxlZCkK
ICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJT
dGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyhtX2dyYXBoKTsK
KworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBsaXZlOworCisg
ICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJsb2NrLT5zc2Et
PmxpdmVBdFRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2luZCgpID09IE5v
ZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmUu
YWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAgICAgICAgICAg
bGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguZG9Ub0NoaWxk
cmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGl2
ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBmb3IgKERG
Rzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsK
KyAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IuYmVnaW5CbG9jayhibG9j
ayk7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBtX2xpdmVJblRvTm9kZS5maW5kKG5vZGUpLT52
YWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZvckFsbExpdmVJbkJ5dGVjb2Rl
KAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLmZvckV4aXQsCisgICAgICAg
ICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IubV9hdmFpbGFiaWxpdHku
Y2xvc2VTdGFydGluZ1dpdGhMb2NhbChyZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFsmXSAoTm9kZSogbm9kZSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gbGl2ZS5jb250YWlucyhub2RlKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChO
b2RlKiBub2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBsaXZlLmFkZChub2RlKS5pc05ld0VudHJ5OworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5leGVjdXRlTm9kZShub2RlKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqLworICAgICAgICB9
CiAgICAgfQogICAgIAogICAgIHZvaWQgbG93ZXIoKQpAQCAtNTA4LDYgKzU1NCw4MyBAQCBwcml2
YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB2YWxpZGF0ZUFJU3RhdGUoTm9kZSog
bm9kZSkKKyAgICB7CisgICAgICAgIGlmICghbV9ncmFwaER1bXApIHsKKyAgICAgICAgICAgIFN0
cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgICAgIG1fZ3JhcGguZHVtcChvdXQpOworICAg
ICAgICAgICAgbV9ncmFwaER1bXAgPSBvdXQudG9TdHJpbmcoKTsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIEJlZm9yZSB3ZSBleGVjdXRlIG5vZGUuCisgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBt
X2xpdmVJblRvTm9kZS5maW5kKG5vZGUpLT52YWx1ZTsKKyAgICAgICAgLy9kYXRhTG9nTG4oIkhh
bmRsaW5nIG5vZGUgIiwgbm9kZS0+aW5kZXgoKSk7CisgICAgICAgIHVuc2lnbmVkIGhpZ2hQYXJl
bnRJbmRleCA9IG5vZGUtPmluZGV4KCk7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA6IGxpdmUp
IHsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpCisgICAgICAg
ICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghbm9kZS0+aGFzSlNSZXN1bHQo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gT09QUworCisgICAgICAgICAgICBpZiAo
bm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzKSB7CisgICAgICAgICAgICAgICAgLy8gT09QUzog
dWdoLi4uCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHVuc2lnbmVkIGhpZ2hDaGlsZEluZGV4ID0gbm9kZS0+aW5kZXgoKTsKKworICAgICAg
ICAgICAgLy9kYXRhTG9nTG4oIiAgIGxpdmUgbm9kZSAiLCBub2RlLT5pbmRleCgpKTsKKworICAg
ICAgICAgICAgU3RydWN0dXJlU2V0IHNldDsKKyAgICAgICAgICAgIGlmIChtX2ludGVycHJldGVy
LmZvck5vZGUobm9kZSkubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgICAgICBz
ZXQgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSkubV9zdHJ1Y3R1cmUudG9TdHJ1Y3R1cmVT
ZXQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIGR1bXAgPSBtX2dyYXBoRHVt
cDsKKyAgICAgICAgICAgIExWYWx1ZSBpbnB1dCA9IGxvd0pTVmFsdWUoRWRnZShub2RlLCBVbnR5
cGVkVXNlKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV9pbnRlcnByZXRl
ci5mb3JOb2RlKG5vZGUpLm1fdHlwZTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0
Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgICAgICBwYXRjaHBvaW50
LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5wdXQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0
R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlv
blBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHJlZyA9IHBhcmFtc1sw
XS5ncHIoKTsKKyAgICAgICAgICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYg
Y29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGNvbnRleHQuZ3ByKHJlZykpOyAKKyAgICAgICAgICAgICAgICAgICAgU3BlY3VsYXRl
ZFR5cGUgdmFsdWVUeXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOworCisgICAgICAg
ICAgICAgICAgICAgIGlmICgodmFsdWVUeXBlIHwgdHlwZSkgIT0gdHlwZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJoaWdoUGFyZW50SW5kZXg6ICIsIGhpZ2hQYXJlbnRJ
bmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImhpZ2hDaGlsZEluZGV4
OiAiLCBoaWdoQ2hpbGRJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
InZhbHVlVHlwZSA9ICIpOworICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFNwZWN1bGF0aW9u
KFdURjo6ZGF0YUZpbGUoKSwgdmFsdWVUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oInZhbHVlID0g
IiwgdmFsdWUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJ0eXBlID0gIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgp
LCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbihkdW1wKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
ICAgIGlmIChzZXQuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVl
LmlzQ2VsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJIYXZl
IHN0cnVjdHVyZSBzZXQsIGJ1dCB2YWx1ZSBpcyBub3QgYSBjZWxsIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXQuY29udGFpbnModmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiU3Ry
dWN0dXJlIHNldDogIiwgc2V0LCAiICBkb2VzIG5vdCBjb250YWluOiAiLCAqdmFsdWUuYXNDZWxs
KCktPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDUkFTSCgpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGJv
b2wgY29tcGlsZU5vZGUodW5zaWduZWQgbm9kZUluZGV4KQogICAgIHsKICAgICAgICAgaWYgKCFt
X3N0YXRlLmlzVmFsaWQoKSkgewpAQCAtNTI3LDYgKzY1MCw5IEBAIHByaXZhdGU6CiAgICAgICAg
IG1faW50ZXJwcmV0ZXIuc3RhcnRFeGVjdXRpbmcoKTsKICAgICAgICAgbV9pbnRlcnByZXRlci5l
eGVjdXRlS25vd25FZGdlVHlwZXMobV9ub2RlKTsKIAorICAgICAgICBpZiAoT3B0aW9uczo6dmFs
aWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSkKKyAgICAgICAgICAgIHZhbGlkYXRlQUlT
dGF0ZShtX25vZGUpOworCiAgICAgICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAg
ICAgICAgYm9vbCBleHBlY3REb2VzR0MgPSBkb2VzR0MobV9ncmFwaCwgbV9ub2RlKTsKICAgICAg
ICAgICAgIG1fb3V0LnN0b3JlKG1fb3V0LmNvbnN0Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5h
YnNvbHV0ZSh2bSgpLmhlYXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpKTsKQEAgLTE1MTczLDcg
KzE1Mjk5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJWYWx1ZSBu
b3QgZGVmaW5lZCIpOworICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCBtYWtlU3Ry
aW5nKCJWYWx1ZSBub3QgZGVmaW5lZDogIiwgU3RyaW5nOjpudW1iZXIoZWRnZS5ub2RlKCktPmlu
ZGV4KCkpKS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAt
MTcxOTksNiArMTczMjUsOSBAQCBwcml2YXRlOgogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47CiAg
ICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7CiAgICAgTm9kZSogbV9ub2RlOworCisgICAgSGFzaE1h
cDxOb2RlKiwgTm9kZVNldD4gbV9saXZlSW5Ub05vZGU7CisgICAgU3RyaW5nIG1fZ3JhcGhEdW1w
OwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMjQzMTU3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw2
ICszODYsOCBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0T3B0aW9ucygpCiAKIHN0YXRpYyB2b2lkIHJl
Y29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogeworICAgIE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJh
Y3RJbnRlcnByZXRlclN0YXRlKCkgPSAxOworCiAjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIE9w
dGlvbnM6OnZhbGlkYXRlREZHRXhjZXB0aW9uSGFuZGxpbmcoKSA9IHRydWU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0MzE1
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoLCBVSU5UX01BWCwgTm9ybWFsLCAiVGhyZXNob2xkIGZvciBnbG9iYWwgbGV4aWNhbCBi
aW5kaW5nIGVwb2NoLiBJZiB0aGUgZXBvY2ggcmVhY2hlcyB0byB0aGlzIHZhbHVlLCBDb2RlQmxv
Y2sgbWV0YWRhdGEgZm9yIHNjb3BlIG9wZXJhdGlvbnMgd2lsbCBiZSByZXZpc2VkIGdsb2JhbGx5
LiBJdCBuZWVkcyB0byBiZSBncmVhdGVyIHRoYW4gMS4iKSBcCiAgICAgdihvcHRpb25TdHJpbmcs
IGRpc2tDYWNoZVBhdGgsIG51bGxwdHIsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKICAgICB2KGJv
b2wsIGZvcmNlRGlza0NhY2hlLCBmYWxzZSwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAorICAgIHYo
Ym9vbCwgdmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUsIGZhbHNlLCBSZXN0cmljdGVk
LCBudWxscHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAkocmV2
aXNpb24gMjQzMTU3KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0
aWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4Niw4ICsyODYsMTEgQEAgYm9vbCBpbmpl
Y3RJREJLZXlJbnRvU2NyaXB0VmFsdWUoRXhlY1N0YQogICAgIGlmICgha2V5KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICBkYXRhTG9nTG4odmFsdWUpOworICAgIGRhdGFMb2dMbihKU0M6
OkpTT05TdHJpbmdpZnkoJmV4ZWMsIHZhbHVlLCAwKSk7CiAgICAgaWYgKCFzZXQoZXhlYywgcGFy
ZW50LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCB0b0pTKGV4ZWMsICpleGVjLmxleGljYWxHbG9i
YWxPYmplY3QoKSwga2V5LmdldCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkYXRh
TG9nTG4oSlNDOjpKU09OU3RyaW5naWZ5KCZleGVjLCB2YWx1ZSwgMCkpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365288</attachid>
            <date>2019-03-19 19:21:31 -0700</date>
            <delta_ts>2019-03-19 19:38:56 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>10483</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xJbnQzMiB8IFNwZWNCaWdJbnQpOworICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSB8IFNwZWNCaWdJbnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7CkBAIC00MTQsNyArNDE0LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJl
cldvcmxkKCk7Ci0gICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbEludDMy
IHwgU3BlY0JpZ0ludCk7CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50
MzJPbmx5IHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKQEAgLTI3MzAsNyArMjczMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVuY3Rpb24pOworICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVuY3Rpb24gfCBTcGVjT2JqZWN0T3RoZXIpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkRGR0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRl
ICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlz
aXNQaGFzZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAg
LTgyLDYgKzgzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJv
YmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVk
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2
ICsxNTcsNTAgQEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgs
IG1fc3RhdGUpCiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNw
ZWN0cmVNaXRpZ2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdE
aXNhYmxlZCkKICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50
ZXJwcmV0ZXJTdGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyht
X2dyYXBoKTsKKworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9n
cmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBs
aXZlOworCisgICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJs
b2NrLT5zc2EtPmxpdmVBdFRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2lu
ZCgpID09IE5vZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxpdmUuYWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
ZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbGl2ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICBmb3IgKERGRzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9y
ZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IuYmVnaW5C
bG9jayhibG9jayk7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBtX2xpdmVJblRvTm9kZS5maW5k
KG5vZGUpLT52YWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZvckFsbExpdmVJ
bkJ5dGVjb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLmZvckV4aXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IubV9hdmFp
bGFiaWxpdHkuY2xvc2VTdGFydGluZ1dpdGhMb2NhbChyZWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsmXSAoTm9kZSogbm9kZSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGl2ZS5jb250YWlucyhub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyZdIChOb2RlKiBub2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsaXZlLmFkZChub2RlKS5pc05ld0VudHJ5OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5leGVjdXRlTm9kZShu
b2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqLwor
ICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHZvaWQgbG93ZXIoKQpAQCAtNTA4LDYgKzU1NCw5
NCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCB2YWxpZGF0ZUFJU3Rh
dGUoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIGlmICghbV9ncmFwaER1bXApIHsKKyAgICAg
ICAgICAgIFN0cmluZ1ByaW50U3RyZWFtIG91dDsKKyAgICAgICAgICAgIG1fZ3JhcGguZHVtcChv
dXQpOworICAgICAgICAgICAgbV9ncmFwaER1bXAgPSBvdXQudG9TdHJpbmcoKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEJlZm9yZSB3ZSBleGVjdXRlIG5vZGUuCisgICAgICAgIE5vZGVTZXQm
IGxpdmUgPSBtX2xpdmVJblRvTm9kZS5maW5kKG5vZGUpLT52YWx1ZTsKKyAgICAgICAgLy9kYXRh
TG9nTG4oIkhhbmRsaW5nIG5vZGUgIiwgbm9kZS0+aW5kZXgoKSk7CisgICAgICAgIHVuc2lnbmVk
IGhpZ2hQYXJlbnRJbmRleCA9IG5vZGUtPmluZGV4KCk7CisgICAgICAgIGZvciAoTm9kZSogbm9k
ZSA6IGxpdmUpIHsKKyAgICAgICAgICAgIGlmIChub2RlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmICghbm9kZS0+aGFz
SlNSZXN1bHQoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gT09QUworCisgICAgICAg
ICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVja0luQm91bmRzKSB7CisgICAgICAgICAgICAgICAg
Ly8gT09QUzogdWdoLi4uCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGhpZ2hDaGlsZEluZGV4ID0gbm9kZS0+aW5kZXgoKTsK
KworICAgICAgICAgICAgLy9kYXRhTG9nTG4oIiAgIGxpdmUgbm9kZSAiLCBub2RlLT5pbmRleCgp
KTsKKworICAgICAgICAgICAgU3RydWN0dXJlU2V0IHNldDsKKyAgICAgICAgICAgIGlmIChtX2lu
dGVycHJldGVyLmZvck5vZGUobm9kZSkubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAg
ICAgICAgICBzZXQgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSkubV9zdHJ1Y3R1cmUudG9T
dHJ1Y3R1cmVTZXQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nIGR1bXAgPSBt
X2dyYXBoRHVtcDsKKyAgICAgICAgICAgIExWYWx1ZSBpbnB1dCA9IGxvd0pTVmFsdWUoRWRnZShu
b2RlLCBVbnR5cGVkVXNlKSk7CisgICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSB0eXBlID0gbV9p
bnRlcnByZXRlci5mb3JOb2RlKG5vZGUpLm1fdHlwZTsKKyAgICAgICAgICAgIFBhdGNocG9pbnRW
YWx1ZSogcGF0Y2hwb2ludCA9IG1fb3V0LnBhdGNocG9pbnQoVm9pZCk7CisgICAgICAgICAgICBw
YXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5wdXQpOworICAgICAgICAgICAgcGF0Y2hw
b2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNrbWFw
R2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAgR1BSUmVnIHJlZyA9
IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBqaXQucHJvYmUoWz1dIChQcm9iZTo6
Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnRleHQuZ3ByKHJlZykpOyAKKyAgICAgICAgICAgICAgICAgICAg
U3BlY3VsYXRlZFR5cGUgdmFsdWVUeXBlID0gc3BlY3VsYXRpb25Gcm9tVmFsdWUodmFsdWUpOwor
CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgbWF5IHNlZW0gd3JvbmcgaW50dWl0
aXZlbHksIGJ1dCB5b3UgY291bGQgYmUgc29tZSB0eXBlIGxpa2UgKFN0cmluZyB8IE90aGVyKSB3
aGVyZSB3ZSBoYXZlIHN0cmluZyBzdHJ1Y3R1cmUgb25seSBpZiB3ZSdyZSBhIGNlbGwuCisgICAg
ICAgICAgICAgICAgICAgIGlmIChzZXQuc2l6ZSgpICYmIHZhbHVlLmlzQ2VsbCgpKSB7IAorICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFzZXQuY29udGFpbnModmFsdWUuYXNDZWxsKCktPnN0
cnVjdHVyZSgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiaGln
aFBhcmVudEluZGV4OiAiLCBoaWdoUGFyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRhdGFMb2dMbigiaGlnaENoaWxkSW5kZXg6ICIsIGhpZ2hDaGlsZEluZGV4KTsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coInZhbHVlVHlwZSA9ICIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBTcGVjdWxhdGlvbihXVEY6OmRhdGFGaWxlKCks
IHZhbHVlVHlwZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oInZhbHVlID0gIiwgdmFsdWUp
OworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiZXhwZWN0ZWQgdHlwZSA9
ICIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBTcGVjdWxhdGlvbihXVEY6OmRh
dGFGaWxlKCksIHR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxu
Iik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oZHVtcCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlN0cnVjdHVyZSBzZXQ6ICIsIHNl
dCwgIiAgZG9lcyBub3QgY29udGFpbjogIiwgKnZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1JBU0goKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlm
ICgodmFsdWVUeXBlIHwgdHlwZSkgIT0gdHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJoaWdoUGFyZW50SW5kZXg6ICIsIGhpZ2hQYXJlbnRJbmRleCk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImhpZ2hDaGlsZEluZGV4OiAiLCBoaWdoQ2hpbGRJ
bmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coInZhbHVlVHlwZSA9ICIp
OworICAgICAgICAgICAgICAgICAgICAgICAgZHVtcFNwZWN1bGF0aW9uKFdURjo6ZGF0YUZpbGUo
KSwgdmFsdWVUeXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oInZhbHVlID0gIiwgdmFsdWUpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJleHBlY3RlZCB0eXBlID0gIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgpLCB0eXBl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2dMbihkdW1wKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
Q1JBU0goKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgY29tcGlsZU5vZGUo
dW5zaWduZWQgbm9kZUluZGV4KQogICAgIHsKICAgICAgICAgaWYgKCFtX3N0YXRlLmlzVmFsaWQo
KSkgewpAQCAtNTI3LDYgKzY2MSw5IEBAIHByaXZhdGU6CiAgICAgICAgIG1faW50ZXJwcmV0ZXIu
c3RhcnRFeGVjdXRpbmcoKTsKICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlS25vd25FZGdl
VHlwZXMobV9ub2RlKTsKIAorICAgICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVBYnN0cmFjdElu
dGVycHJldGVyU3RhdGUoKSkKKyAgICAgICAgICAgIHZhbGlkYXRlQUlTdGF0ZShtX25vZGUpOwor
CiAgICAgICAgIGlmICh2YWxpZGF0ZURGR0RvZXNHQykgewogICAgICAgICAgICAgYm9vbCBleHBl
Y3REb2VzR0MgPSBkb2VzR0MobV9ncmFwaCwgbV9ub2RlKTsKICAgICAgICAgICAgIG1fb3V0LnN0
b3JlKG1fb3V0LmNvbnN0Qm9vbChleHBlY3REb2VzR0MpLCBtX291dC5hYnNvbHV0ZSh2bSgpLmhl
YXAuYWRkcmVzc09mRXhwZWN0RG9lc0dDKCkpKTsKQEAgLTE1MTczLDcgKzE1MzEwLDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJWYWx1ZSBub3QgZGVmaW5lZCIpOwor
ICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCBtYWtlU3RyaW5nKCJWYWx1ZSBub3Qg
ZGVmaW5lZDogIiwgU3RyaW5nOjpudW1iZXIoZWRnZS5ub2RlKCktPmluZGV4KCkpKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIApAQCAtMTcxOTksNiArMTczMzYs
OSBAQCBwcml2YXRlOgogICAgIE5vZGVPcmlnaW4gbV9vcmlnaW47CiAgICAgdW5zaWduZWQgbV9u
b2RlSW5kZXg7CiAgICAgTm9kZSogbV9ub2RlOworCisgICAgSGFzaE1hcDxOb2RlKiwgTm9kZVNl
dD4gbV9saXZlSW5Ub05vZGU7CisgICAgU3RyaW5nIG1fZ3JhcGhEdW1wOwogfTsKIAogfSAvLyBh
bm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmNwcAkocmV2aXNpb24gMjQzMTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw2ICszODYsOCBAQCBzdGF0
aWMgdm9pZCBjb3JyZWN0T3B0aW9ucygpCiAKIHN0YXRpYyB2b2lkIHJlY29tcHV0ZURlcGVuZGVu
dE9wdGlvbnMoKQogeworICAgIE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0
YXRlKCkgPSAxOworCiAjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIE9wdGlvbnM6OnZhbGlkYXRl
REZHRXhjZXB0aW9uSGFuZGxpbmcoKSA9IHRydWU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDYg
KzUxMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICB2
KHVuc2lnbmVkLCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGluZ0Vwb2NoLCBVSU5UX01B
WCwgTm9ybWFsLCAiVGhyZXNob2xkIGZvciBnbG9iYWwgbGV4aWNhbCBiaW5kaW5nIGVwb2NoLiBJ
ZiB0aGUgZXBvY2ggcmVhY2hlcyB0byB0aGlzIHZhbHVlLCBDb2RlQmxvY2sgbWV0YWRhdGEgZm9y
IHNjb3BlIG9wZXJhdGlvbnMgd2lsbCBiZSByZXZpc2VkIGdsb2JhbGx5LiBJdCBuZWVkcyB0byBi
ZSBncmVhdGVyIHRoYW4gMS4iKSBcCiAgICAgdihvcHRpb25TdHJpbmcsIGRpc2tDYWNoZVBhdGgs
IG51bGxwdHIsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKICAgICB2KGJvb2wsIGZvcmNlRGlza0Nh
Y2hlLCBmYWxzZSwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAorICAgIHYoYm9vbCwgdmFsaWRhdGVB
YnN0cmFjdEludGVycHJldGVyU3RhdGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCiAK
IAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjQzMTU3KQor
KysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4Niw4ICsyODYsMTEgQEAgYm9vbCBpbmplY3RJREJLZXlJbnRvU2Ny
aXB0VmFsdWUoRXhlY1N0YQogICAgIGlmICgha2V5KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBkYXRhTG9nTG4odmFsdWUpOworICAgIGRhdGFMb2dMbihKU0M6OkpTT05TdHJpbmdpZnko
JmV4ZWMsIHZhbHVlLCAwKSk7CiAgICAgaWYgKCFzZXQoZXhlYywgcGFyZW50LCBrZXlQYXRoRWxl
bWVudHMubGFzdCgpLCB0b0pTKGV4ZWMsICpleGVjLmxleGljYWxHbG9iYWxPYmplY3QoKSwga2V5
LmdldCgpKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBkYXRhTG9nTG4oSlNDOjpKU09O
U3RyaW5naWZ5KCZleGVjLCB2YWx1ZSwgMCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365293</attachid>
            <date>2019-03-19 19:38:56 -0700</date>
            <delta_ts>2019-03-20 18:30:47 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>11139</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3Ry
YWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzg5LDcgKzM4OSw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xJbnQzMiB8IFNwZWNCaWdJbnQpOworICAgICAg
ICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSB8IFNwZWNCaWdJbnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgYnJlYWs7CkBAIC00MTQsNyArNDE0LDcgQEAgYm9vbCBBYnN0
cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeQogICAgICAgICAgICAgc2V0VHlwZUZvck5v
ZGUobm9kZSwgU3BlY0JpZ0ludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2xvYmJl
cldvcmxkKCk7Ci0gICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjQm9vbEludDMy
IHwgU3BlY0JpZ0ludCk7CisgICAgICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjSW50
MzJPbmx5IHwgU3BlY0JpZ0ludCk7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAKQEAgLTI3MzAsNyArMjczMCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQotICAgICAgICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVuY3Rpb24pOworICAgICAg
ICBzZXRUeXBlRm9yTm9kZShub2RlLCBTcGVjRnVuY3Rpb24gfCBTcGVjT2JqZWN0T3RoZXIpOwog
ICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpczoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAJKHJldmlzaW9uIDI0MzE1NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQAogI2lu
Y2x1ZGUgIkRGR0RvZXNHQy5oIgogI2luY2x1ZGUgIkRGR0RvbWluYXRvcnMuaCIKICNpbmNsdWRl
ICJERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5oIgorI2luY2x1ZGUgIkRGR0xpdmVuZXNzQW5hbHlz
aXNQaGFzZS5oIgogI2luY2x1ZGUgIkRGR01heUV4aXQuaCIKICNpbmNsdWRlICJERkdPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdEZ1enouaCIKQEAg
LTgyLDYgKzgzLDcgQEAKICNpbmNsdWRlICJKU0xleGljYWxFbnZpcm9ubWVudC5oIgogI2luY2x1
ZGUgIkpTTWFwLmgiCiAjaW5jbHVkZSAiT3BlcmFuZHNJbmxpbmVzLmgiCisjaW5jbHVkZSAiUHJv
YmVDb250ZXh0LmgiCiAjaW5jbHVkZSAiUmVnRXhwT2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NvcGVk
QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiU2NvcGVkQXJndW1lbnRzVGFibGUuaCIKQEAgLTE1NSw2
ICsxNTcsNTAgQEAgcHVibGljOgogICAgICAgICAsIG1faW50ZXJwcmV0ZXIoc3RhdGUuZ3JhcGgs
IG1fc3RhdGUpCiAgICAgICAgICwgbV9pbmRleE1hc2tpbmdNb2RlKE9wdGlvbnM6OmVuYWJsZVNw
ZWN0cmVNaXRpZ2F0aW9ucygpID8gIEluZGV4TWFza2luZ0VuYWJsZWQgOiBJbmRleE1hc2tpbmdE
aXNhYmxlZCkKICAgICB7CisgICAgICAgIGlmIChPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0SW50
ZXJwcmV0ZXJTdGF0ZSgpKSB7CisgICAgICAgICAgICBwZXJmb3JtTGl2ZW5lc3NBbmFseXNpcyht
X2dyYXBoKTsKKworICAgICAgICAgICAgZm9yIChERkc6OkJhc2ljQmxvY2sqIGJsb2NrIDogbV9n
cmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7CisgICAgICAgICAgICAgICAgTm9kZVNldCBs
aXZlOworCisgICAgICAgICAgICAgICAgZm9yIChOb2RlRmxvd1Byb2plY3Rpb24gbm9kZSA6IGJs
b2NrLT5zc2EtPmxpdmVBdFRhaWwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUua2lu
ZCgpID09IE5vZGVGbG93UHJvamVjdGlvbjo6UHJpbWFyeSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxpdmUuYWRkVm9pZChub2RlLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gYmxvY2stPnNpemUoKTsgaS0tOyApIHsKKyAg
ICAgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IGJsb2NrLT5hdChpKTsKKyAgICAgICAgICAg
ICAgICAgICAgbGl2ZS5yZW1vdmUobm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
ZG9Ub0NoaWxkcmVuKG5vZGUsIFsmXSAoRWRnZSBjaGlsZCkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgbGl2ZS5hZGQoY2hpbGQubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICAgICAgICAgIG1fbGl2ZUluVG9Ob2RlLmFkZChub2RlLCBsaXZlKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAg
ICBmb3IgKERGRzo6QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9y
ZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IuYmVnaW5C
bG9jayhibG9jayk7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBub2RlIDogKmJsb2NrKSB7
CisgICAgICAgICAgICAgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBtX2xpdmVJblRvTm9kZS5maW5k
KG5vZGUpLT52YWx1ZTsKKworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmZvckFsbExpdmVJ
bkJ5dGVjb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3JpZ2luLmZvckV4aXQs
CisgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2F2YWlsYWJpbGl0eUNhbGN1bGF0b3IubV9hdmFp
bGFiaWxpdHkuY2xvc2VTdGFydGluZ1dpdGhMb2NhbChyZWcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFsmXSAoTm9kZSogbm9kZSkgLT4gYm9vbCB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGl2ZS5jb250YWlucyhub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyZdIChOb2RlKiBub2RlKSAtPiBib29sIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBsaXZlLmFkZChub2RlKS5pc05ld0VudHJ5OworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgICAgIG1fYXZhaWxhYmlsaXR5Q2FsY3VsYXRvci5leGVjdXRlTm9kZShu
b2RlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqLwor
ICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHZvaWQgbG93ZXIoKQpAQCAtNDczLDYgKzUxOSw4
IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjcmFzaChtX2hpZ2hCbG9jaywgbnVsbHB0cik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBtX2NoZWNrZWROb2Rlcy5j
bGVhcigpOwogICAgICAgICAKICAgICAgICAgbV9hdmFpbGFiaWxpdHlDYWxjdWxhdG9yLmJlZ2lu
QmxvY2sobV9oaWdoQmxvY2spOwogICAgICAgICAKQEAgLTUwOCw2ICs1NTYsMTA2IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIHZhbGlkYXRlQUlTdGF0ZShOb2RlKiBu
b2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoRHVtcCkgeworICAgICAgICAgICAgU3Ry
aW5nUHJpbnRTdHJlYW0gb3V0OworICAgICAgICAgICAgbV9ncmFwaC5kdW1wKG91dCk7CisgICAg
ICAgICAgICBtX2dyYXBoRHVtcCA9IG91dC50b1N0cmluZygpOworICAgICAgICB9CisKKyAgICAg
ICAgLy8gQmVmb3JlIHdlIGV4ZWN1dGUgbm9kZS4KKyAgICAgICAgTm9kZVNldCYgbGl2ZSA9IG1f
bGl2ZUluVG9Ob2RlLmZpbmQobm9kZSktPnZhbHVlOworICAgICAgICAvL2RhdGFMb2dMbigiSGFu
ZGxpbmcgbm9kZSAiLCBub2RlLT5pbmRleCgpKTsKKyAgICAgICAgdW5zaWduZWQgaGlnaFBhcmVu
dEluZGV4ID0gbm9kZS0+aW5kZXgoKTsKKyAgICAgICAgZm9yIChOb2RlKiBub2RlIDogbGl2ZSkg
eworICAgICAgICAgICAgaWYgKG5vZGUtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFub2RlLT5oYXNKU1Jlc3VsdCgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBPT1BTCisKKyAgICAgICAgICAgIGlmIChu
b2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpIHsKKyAgICAgICAgICAgICAgICAvLyBPT1BTOiB1
Z2guLi4KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2RlKTsK
KworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fY2hlY2tlZE5v
ZGVzLmZpbmQobm9kZSk7CisgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9jaGVja2VkTm9k
ZXMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSBjaGVja2VkVmFs
dWUgPSBpdGVyLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZWRWYWx1ZSA9
PSB2YWx1ZSAmJiAhKHZhbHVlLm1fdHlwZSAmIFNwZWNDZWxsKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2No
ZWNrZWROb2Rlcy5zZXQobm9kZSwgdmFsdWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICB1bnNpZ25lZCBoaWdoQ2hpbGRJbmRleCA9IG5vZGUtPmluZGV4KCk7CisKKyAgICAgICAgICAg
IC8vZGF0YUxvZ0xuKCIgICBsaXZlIG5vZGUgIiwgbm9kZS0+aW5kZXgoKSk7CisKKyAgICAgICAg
ICAgIFN0cnVjdHVyZVNldCBzZXQ7CisgICAgICAgICAgICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUu
aXNGaW5pdGUoKSkKKyAgICAgICAgICAgICAgICBzZXQgPSB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0
cnVjdHVyZVNldCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgZHVtcCA9IG1f
Z3JhcGhEdW1wOworICAgICAgICAgICAgTFZhbHVlIGlucHV0ID0gbG93SlNWYWx1ZShFZGdlKG5v
ZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1
ZS5tX3R5cGU7CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291
dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+YXBwZW5kU29tZVJl
Z2lzdGVyKGlucHV0KTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0g
KENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRpb25QYXJhbXMmIHBhcmFt
cykgeworICAgICAgICAgICAgICAgIEdQUlJlZyByZWcgPSBwYXJhbXNbMF0uZ3ByKCk7CisgICAg
ICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQmIGNvbnRleHQpIHsKKyAg
ICAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb250ZXh0
LmdwcihyZWcpKTsgCisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHZhbHVlVHlw
ZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKworICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGNoZWNrIG1heSBzZWVtIHdyb25nIGludHVpdGl2ZWx5LCBidXQgeW91IGNvdWxkIGJl
IHNvbWUgdHlwZSBsaWtlIChTdHJpbmcgfCBPdGhlcikgd2hlcmUgd2UgaGF2ZSBzdHJpbmcgc3Ry
dWN0dXJlIG9ubHkgaWYgd2UncmUgYSBjZWxsLgorICAgICAgICAgICAgICAgICAgICBpZiAoc2V0
LnNpemUoKSAmJiB2YWx1ZS5pc0NlbGwoKSkgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghc2V0LmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImhpZ2hQYXJlbnRJbmRleDogIiwgaGlnaFBh
cmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImhpZ2hD
aGlsZEluZGV4OiAiLCBoaWdoQ2hpbGRJbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJ2YWx1ZVR5cGUgPSAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgpLCB2YWx1ZVR5cGUpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZ0xuKCJ2YWx1ZSA9ICIsIHZhbHVlKTsKKworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGRhdGFMb2coImV4cGVjdGVkIHR5cGUgPSAiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgpLCB0eXBlKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZ0xuKGR1bXApOworCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZ0xuKCJTdHJ1Y3R1cmUgc2V0OiAiLCBzZXQsICIgIGRvZXMgbm90IGNvbnRhaW46
ICIsICp2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAoKHZhbHVlVHlwZSB8IHR5cGUpICE9
IHR5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiaGlnaFBhcmVudElu
ZGV4OiAiLCBoaWdoUGFyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
Z0xuKCJoaWdoQ2hpbGRJbmRleDogIiwgaGlnaENoaWxkSW5kZXgpOworCisgICAgICAgICAgICAg
ICAgICAgICAgICBkYXRhTG9nKCJ2YWx1ZVR5cGUgPSAiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGR1bXBTcGVjdWxhdGlvbihXVEY6OmRhdGFGaWxlKCksIHZhbHVlVHlwZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZ0xuKCJ2YWx1ZSA9ICIsIHZhbHVlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
ZGF0YUxvZygiZXhwZWN0ZWQgdHlwZSA9ICIpOworICAgICAgICAgICAgICAgICAgICAgICAgZHVt
cFNwZWN1bGF0aW9uKFdURjo6ZGF0YUZpbGUoKSwgdHlwZSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBkYXRhTG9nKCJcbiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
ZHVtcCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9CisKICAgICBib29sIGNvbXBpbGVOb2RlKHVuc2lnbmVkIG5vZGVJbmRleCkKICAg
ICB7CiAgICAgICAgIGlmICghbV9zdGF0ZS5pc1ZhbGlkKCkpIHsKQEAgLTUyNyw2ICs2NzUsOSBA
QCBwcml2YXRlOgogICAgICAgICBtX2ludGVycHJldGVyLnN0YXJ0RXhlY3V0aW5nKCk7CiAgICAg
ICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZUtub3duRWRnZVR5cGVzKG1fbm9kZSk7CiAKKyAgICAg
ICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlKCkpCisgICAg
ICAgICAgICB2YWxpZGF0ZUFJU3RhdGUobV9ub2RlKTsKKwogICAgICAgICBpZiAodmFsaWRhdGVE
RkdEb2VzR0MpIHsKICAgICAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1fZ3Jh
cGgsIG1fbm9kZSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZShtX291dC5jb25zdEJvb2woZXhw
ZWN0RG9lc0dDKSwgbV9vdXQuYWJzb2x1dGUodm0oKS5oZWFwLmFkZHJlc3NPZkV4cGVjdERvZXNH
QygpKSk7CkBAIC0xNTE3Myw3ICsxNTMyNCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBERkdfQ1JBU0gobV9ncmFw
aCwgbV9ub2RlLCAiVmFsdWUgbm90IGRlZmluZWQiKTsKKyAgICAgICAgREZHX0NSQVNIKG1fZ3Jh
cGgsIG1fbm9kZSwgbWFrZVN0cmluZygiVmFsdWUgbm90IGRlZmluZWQ6ICIsIFN0cmluZzo6bnVt
YmVyKGVkZ2Uubm9kZSgpLT5pbmRleCgpKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAKQEAgLTE3MTk5LDYgKzE3MzUwLDEwIEBAIHByaXZhdGU6CiAgICAgTm9k
ZU9yaWdpbiBtX29yaWdpbjsKICAgICB1bnNpZ25lZCBtX25vZGVJbmRleDsKICAgICBOb2RlKiBt
X25vZGU7CisKKyAgICBIYXNoTWFwPE5vZGUqLCBOb2RlU2V0PiBtX2xpdmVJblRvTm9kZTsKKyAg
ICBIYXNoTWFwPE5vZGUqLCBBYnN0cmFjdFZhbHVlPiBtX2NoZWNrZWROb2RlczsKKyAgICBTdHJp
bmcgbV9ncmFwaER1bXA7CiB9OwogCiB9IC8vIGFub255bW91cyBuYW1lc3BhY2UKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAyNDMxNTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzg2LDYgKzM4Niw4IEBAIHN0YXRpYyB2b2lkIGNvcnJlY3RPcHRpb25zKCkKIAog
c3RhdGljIHZvaWQgcmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiB7CisgICAgT3B0aW9uczo6
dmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSA9IDE7CisKICNpZiAhZGVmaW5lZChO
REVCVUcpCiAgICAgT3B0aW9uczo6dmFsaWRhdGVERkdFeGNlcHRpb25IYW5kbGluZygpID0gdHJ1
ZTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
cmV2aXNpb24gMjQzMTU3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEwLDcgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5zaWduZWQsIHRocmVzaG9sZEZvckdsb2Jh
bExleGljYWxCaW5kaW5nRXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJlc2hvbGQgZm9yIGds
b2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMg
dmFsdWUsIENvZGVCbG9jayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJl
dmlzZWQgZ2xvYmFsbHkuIEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwKICAgICB2
KG9wdGlvblN0cmluZywgZGlza0NhY2hlUGF0aCwgbnVsbHB0ciwgUmVzdHJpY3RlZCwgbnVsbHB0
cikgXAogICAgIHYoYm9vbCwgZm9yY2VEaXNrQ2FjaGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxs
cHRyKSBcCisgICAgdihib29sLCB2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZSwgZmFs
c2UsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGls
aXRpZXMuY3BwCShyZXZpc2lvbiAyNDMxNTcpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2LDggKzI4Niwx
MSBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShFeGVjU3RhCiAgICAgaWYgKCFr
ZXkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGRhdGFMb2dMbih2YWx1ZSk7CisgICAg
ZGF0YUxvZ0xuKEpTQzo6SlNPTlN0cmluZ2lmeSgmZXhlYywgdmFsdWUsIDApKTsKICAgICBpZiAo
IXNldChleGVjLCBwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIHRvSlMoZXhlYywgKmV4
ZWMubGV4aWNhbEdsb2JhbE9iamVjdCgpLCBrZXkuZ2V0KCkpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGRhdGFMb2dMbihKU0M6OkpTT05TdHJpbmdpZnkoJmV4ZWMsIHZhbHVlLCAwKSk7
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365457</attachid>
            <date>2019-03-20 18:30:47 -0700</date>
            <delta_ts>2019-03-25 15:45:34 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>13666</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TcGVjdWxhdGVkVHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1NwZWN1bGF0ZWRU
eXBlLmNwcAkocmV2aXNpb24gMjQzMTkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1NwZWN1bGF0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjEyLDkgKzYxMiwxOCBA
QCBib29sIHZhbHVlc0NvdWxkQmVFcXVhbChTcGVjdWxhdGVkVHlwZSBhCiAgICAgcmV0dXJuICEh
KGEgJiBiKTsKIH0KIAotU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlU3VtKFNwZWN1bGF0ZWRU
eXBlIGEsIFNwZWN1bGF0ZWRUeXBlIGIpCitzdGF0aWMgU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91
YmxlU3VtT3JEaWZmZXJlbmNlT3JQcm9kdWN0KFNwZWN1bGF0ZWRUeXBlIGEsIFNwZWN1bGF0ZWRU
eXBlIGIpCiB7CiAgICAgU3BlY3VsYXRlZFR5cGUgcmVzdWx0ID0gYSB8IGI7CisKKyAgICBpZiAo
cmVzdWx0ICYgU3BlY05vbkludEFzRG91YmxlKSB7CisgICAgICAgIC8vIE5hTiBjYW4gYmUgcHJv
ZHVjZWQgYnk6CisgICAgICAgIC8vIEluZmluaXR5IC0gSW5maW5pdHkKKyAgICAgICAgLy8gSW5m
aW5pdHkgKyAoLUluZmluaXR5KQorICAgICAgICAvLyBJbmZpbml0eSAqIDAKKyAgICAgICAgcmVz
dWx0IHw9IFNwZWNEb3VibGVQdXJlTmFOOworICAgIH0KKwogICAgIC8vIEltcHVyZSBOYU4gY291
bGQgYmVjb21lIHB1cmUgTmFOIGR1cmluZyBhZGRpdGlvbiBiZWNhdXNlIGFkZGl0aW9uIG1heSBj
bGVhciBiaXRzLgogICAgIGlmIChyZXN1bHQgJiBTcGVjRG91YmxlSW1wdXJlTmFOKQogICAgICAg
ICByZXN1bHQgfD0gU3BlY0RvdWJsZVB1cmVOYU47CkBAIC02MjQsMTQgKzYzMywxOSBAQCBTcGVj
dWxhdGVkVHlwZSB0eXBlT2ZEb3VibGVTdW0oU3BlY3VsYXRlCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAorU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlU3VtKFNwZWN1bGF0ZWRUeXBlIGEsIFNw
ZWN1bGF0ZWRUeXBlIGIpCit7CisgICAgcmV0dXJuIHR5cGVPZkRvdWJsZVN1bU9yRGlmZmVyZW5j
ZU9yUHJvZHVjdChhLCBiKTsKK30KKwogU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlRGlmZmVy
ZW5jZShTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQogewotICAgIHJldHVybiB0
eXBlT2ZEb3VibGVTdW0oYSwgYik7CisgICAgcmV0dXJuIHR5cGVPZkRvdWJsZVN1bU9yRGlmZmVy
ZW5jZU9yUHJvZHVjdChhLCBiKTsKIH0KIAogU3BlY3VsYXRlZFR5cGUgdHlwZU9mRG91YmxlUHJv
ZHVjdChTcGVjdWxhdGVkVHlwZSBhLCBTcGVjdWxhdGVkVHlwZSBiKQogewotICAgIHJldHVybiB0
eXBlT2ZEb3VibGVTdW0oYSwgYik7CisgICAgcmV0dXJuIHR5cGVPZkRvdWJsZVN1bU9yRGlmZmVy
ZW5jZU9yUHJvZHVjdChhLCBiKTsKIH0KIAogc3RhdGljIFNwZWN1bGF0ZWRUeXBlIHBvbGx1dGVE
b3VibGUoU3BlY3VsYXRlZFR5cGUgdmFsdWUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCShyZXZp
c2lvbiAyNDMxOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4OSw3ICszODksNyBAQCBib29s
IEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICBzZXRUeXBl
Rm9yTm9kZShub2RlLCBTcGVjQmlnSW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBj
bG9iYmVyV29ybGQoKTsKLSAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCb29s
SW50MzIgfCBTcGVjQmlnSW50KTsKKyAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNw
ZWNJbnQzMk9ubHkgfCBTcGVjQmlnSW50KTsKICAgICAgICAgfQogCiAgICAgICAgIGJyZWFrOwpA
QCAtNDE0LDcgKzQxNCw3IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRl
VHkKICAgICAgICAgICAgIHNldFR5cGVGb3JOb2RlKG5vZGUsIFNwZWNCaWdJbnQpOwogICAgICAg
ICBlbHNlIHsKICAgICAgICAgICAgIGNsb2JiZXJXb3JsZCgpOwotICAgICAgICAgICAgc2V0VHlw
ZUZvck5vZGUobm9kZSwgU3BlY0Jvb2xJbnQzMiB8IFNwZWNCaWdJbnQpOworICAgICAgICAgICAg
c2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0ludDMyT25seSB8IFNwZWNCaWdJbnQpOwogICAgICAg
ICB9CiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0yNzMwLDcgKzI3MzAsNyBAQCBi
b29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgc2V0VHlwZUZvck5vZGUo
bm9kZSwgU3BlY0Z1bmN0aW9uKTsKKyAgICAgICAgc2V0VHlwZUZvck5vZGUobm9kZSwgU3BlY0Z1
bmN0aW9uIHwgU3BlY09iamVjdE90aGVyKTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgIAogICAg
IGNhc2UgR2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyNDMxOTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJERkdEb2VzR0MuaCIKICNpbmNsdWRl
ICJERkdEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCIK
KyNpbmNsdWRlICJERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRlICJERkdNYXlF
eGl0LmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5oIgogI2lu
Y2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCkBAIC04Miw2ICs4Myw3IEBACiAjaW5jbHVkZSAiSlNM
ZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1ZGUgIk9wZXJh
bmRzSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlZ0V4
cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlNjb3Bl
ZEFyZ3VtZW50c1RhYmxlLmgiCkBAIC05OSw2ICsxMDEsOCBAQAogI2luY2x1ZGUgPHd0Zi9SZWN1
cnNhYmxlTGFtYmRhLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZFVub3JkZXJlZFNldC5oPgogCisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXJQcmludGVyLmgiCisKICN1bmRlZiBSRUxFQVNFX0FTU0VSVAog
I2RlZmluZSBSRUxFQVNFX0FTU0VSVChhc3NlcnRpb24pIGRvIHsgXAogICAgIGlmICghKGFzc2Vy
dGlvbikpIHsgXApAQCAtMTU1LDYgKzE1OSw1MCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9pbnRl
cnByZXRlcihzdGF0ZS5ncmFwaCwgbV9zdGF0ZSkKICAgICAgICAgLCBtX2luZGV4TWFza2luZ01v
ZGUoT3B0aW9uczo6ZW5hYmxlU3BlY3RyZU1pdGlnYXRpb25zKCkgPyAgSW5kZXhNYXNraW5nRW5h
YmxlZCA6IEluZGV4TWFza2luZ0Rpc2FibGVkKQogICAgIHsKKyAgICAgICAgaWYgKE9wdGlvbnM6
OnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlKCkpIHsKKyAgICAgICAgICAgIHBlcmZv
cm1MaXZlbmVzc0FuYWx5c2lzKG1fZ3JhcGgpOworCisgICAgICAgICAgICBmb3IgKERGRzo6QmFz
aWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luTmF0dXJhbE9yZGVyKCkpIHsKKyAgICAg
ICAgICAgICAgICBOb2RlU2V0IGxpdmU7CisKKyAgICAgICAgICAgICAgICBmb3IgKE5vZGVGbG93
UHJvamVjdGlvbiBub2RlIDogYmxvY2stPnNzYS0+bGl2ZUF0VGFpbCkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS5raW5kKCkgPT0gTm9kZUZsb3dQcm9qZWN0aW9uOjpQcmltYXJ5KQor
ICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZS5hZGRWb2lkKG5vZGUubm9kZSgpKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBibG9jay0+
c2l6ZSgpOyBpLS07ICkgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2st
PmF0KGkpOworICAgICAgICAgICAgICAgICAgICBsaXZlLnJlbW92ZShub2RlKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4obm9kZSwgWyZdIChFZGdlIGNoaWxkKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBsaXZlLmFkZChjaGlsZC5ub2RlKCkpOworICAgICAg
ICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgbV9saXZlSW5Ub05vZGUuYWRk
KG5vZGUsIGxpdmUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgLyoKKyAgICAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIG1fYXZhaWxhYmls
aXR5Q2FsY3VsYXRvci5iZWdpbkJsb2NrKGJsb2NrKTsKKyAgICAgICAgICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgOiAqYmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZVNldCYgbGl2ZSA9
IG1fbGl2ZUluVG9Ob2RlLmZpbmQobm9kZSktPnZhbHVlOworCisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguZm9yQWxsTGl2ZUluQnl0ZWNvZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLT5vcmlnaW4uZm9yRXhpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFsmXSAoVmlydHVh
bFJlZ2lzdGVyIHJlZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYXZhaWxhYmls
aXR5Q2FsY3VsYXRvci5tX2F2YWlsYWJpbGl0eS5jbG9zZVN0YXJ0aW5nV2l0aExvY2FsKHJlZywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyZdIChOb2RlKiBub2RlKSAtPiBib29s
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsaXZlLmNvbnRh
aW5zKG5vZGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbJl0gKE5vZGUqIG5vZGUpIC0+IGJvb2wgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpdmUuYWRkKG5vZGUpLmlzTmV3
RW50cnk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgbV9hdmFpbGFiaWxpdHlDYWxj
dWxhdG9yLmV4ZWN1dGVOb2RlKG5vZGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICovCisgICAgICAgIH0KICAgICB9CiAgICAgCiAgICAgdm9pZCBsb3dl
cigpCkBAIC00NzMsNiArNTIxLDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGNyYXNoKG1faGln
aEJsb2NrLCBudWxscHRyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAg
ICAgIG1fY2hlY2tlZE5vZGVzLmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBtX2F2YWlsYWJp
bGl0eUNhbGN1bGF0b3IuYmVnaW5CbG9jayhtX2hpZ2hCbG9jayk7CiAgICAgICAgIApAQCAtNTA4
LDYgKzU1OCwxMzUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgdmFs
aWRhdGVBSVN0YXRlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAoIW1fZ3JhcGhEdW1w
KSB7CisgICAgICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgICAgICBtX2dy
YXBoLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG1fZ3JhcGhEdW1wID0gb3V0LnRvU3RyaW5nKCk7
CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgY2Fz
ZSBNb3ZIaW50OgorICAgICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgTGF6eUpT
Q29uc3RhbnQ6CisgICAgICAgIGNhc2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50
NTJDb25zdGFudDoKKyAgICAgICAgY2FzZSBHZXRTdGFjazoKKyAgICAgICAgY2FzZSBQdXRTdGFj
azoKKyAgICAgICAgY2FzZSBLaWxsU3RhY2s6CisgICAgICAgIGNhc2UgWm9tYmllSGludDoKKyAg
ICAgICAgY2FzZSBFeGl0T0s6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJlZm9yZSB3ZSBl
eGVjdXRlIG5vZGUuCisgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBtX2xpdmVJblRvTm9kZS5maW5k
KG5vZGUpLT52YWx1ZTsKKyAgICAgICAgLy9kYXRhTG9nTG4oIkhhbmRsaW5nIG5vZGUgIiwgbm9k
ZS0+aW5kZXgoKSk7CisgICAgICAgIHVuc2lnbmVkIGhpZ2hQYXJlbnRJbmRleCA9IG5vZGUtPmlu
ZGV4KCk7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA6IGxpdmUpIHsKKyAgICAgICAgICAgIGlm
IChub2RlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIGlmICghbm9kZS0+aGFzSlNSZXN1bHQoKSkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsgLy8gT09QUworCisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBDaGVj
a0luQm91bmRzKSB7CisgICAgICAgICAgICAgICAgLy8gT09QUzogdWdoLi4uCisgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgQWJzdHJhY3RW
YWx1ZSB2YWx1ZSA9IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2RlKTsKKworICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIGF1dG8gaXRlciA9IG1fY2hlY2tlZE5vZGVzLmZpbmQobm9kZSk7
CisgICAgICAgICAgICAgICAgaWYgKGl0ZXIgIT0gbV9jaGVja2VkTm9kZXMuZW5kKCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSBjaGVja2VkVmFsdWUgPSBpdGVyLT52YWx1
ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZWRWYWx1ZSA9PSB2YWx1ZSkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCEodmFsdWUubV90eXBlICYgU3BlY0NlbGwpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHZhbHVlLm1fc3RydWN0dXJlLmlzVG9wKCkgJiYgdmFsdWUubV9hcnJheU1vZGVzID09
IEFMTF9BUlJBWV9NT0RFUyAmJiAhdmFsdWUubV92YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBtX2NoZWNrZWROb2Rlcy5zZXQobm9kZSwgdmFsdWUpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICB1bnNpZ25lZCBoaWdoQ2hpbGRJbmRleCA9IG5vZGUt
PmluZGV4KCk7CisKKyAgICAgICAgICAgIC8vZGF0YUxvZ0xuKCIgICBsaXZlIG5vZGUgIiwgbm9k
ZS0+aW5kZXgoKSk7CisKKyAgICAgICAgICAgIFN0cnVjdHVyZVNldCBzZXQ7CisgICAgICAgICAg
ICBpZiAodmFsdWUubV9zdHJ1Y3R1cmUuaXNGaW5pdGUoKSkKKyAgICAgICAgICAgICAgICBzZXQg
PSB2YWx1ZS5tX3N0cnVjdHVyZS50b1N0cnVjdHVyZVNldCgpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBTdHJpbmcgZHVtcCA9IG1fZ3JhcGhEdW1wOworICAgICAgICAgICAgTFZhbHVlIGlu
cHV0ID0gbG93SlNWYWx1ZShFZGdlKG5vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgIFNw
ZWN1bGF0ZWRUeXBlIHR5cGUgPSB2YWx1ZS5tX3R5cGU7CisgICAgICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQpOworICAgICAgICAgICAg
cGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICBwYXRj
aHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5wdXQpOworICAgICAgICAgICAgSlNWYWx1ZSBj
b25zdGFudFZhbHVlID0gdmFsdWUubV92YWx1ZTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPnNl
dEdlbmVyYXRvcihbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgeworICAgICAgICAgICAgICAgIEdQUlJlZyByZWcgPSBwYXJhbXNb
MF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTVmFsdWU6
OmRlY29kZShjb250ZXh0LmdwcihyZWcpKTsgCisgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0
ZWRUeXBlIHZhbHVlVHlwZSA9IHNwZWN1bGF0aW9uRnJvbVZhbHVlKHZhbHVlKTsKKworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGNoZWNrIG1heSBzZWVtIHdyb25nIGludHVpdGl2ZWx5LCBi
dXQgeW91IGNvdWxkIGJlIHNvbWUgdHlwZSBsaWtlIChTdHJpbmcgfCBPdGhlcikgd2hlcmUgd2Ug
aGF2ZSBzdHJpbmcgc3RydWN0dXJlIG9ubHkgaWYgd2UncmUgYSBjZWxsLgorICAgICAgICAgICAg
ICAgICAgICBpZiAoc2V0LnNpemUoKSAmJiB2YWx1ZS5pc0NlbGwoKSkgeyAKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oImhpZ2hQYXJlbnRJ
bmRleDogIiwgaGlnaFBhcmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG4oImhpZ2hDaGlsZEluZGV4OiAiLCBoaWdoQ2hpbGRJbmRleCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJ2YWx1ZVR5cGUgPSAiKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgpLCB2YWx1ZVR5
cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIlxuIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJ2YWx1ZSA9ICIsIHZhbHVlKTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coImV4cGVjdGVkIHR5cGUgPSAiKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgp
LCB0eXBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJcbiIpOworCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKGR1bXApOworCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJTdHJ1Y3R1cmUgc2V0OiAiLCBzZXQsICIgIGRv
ZXMgbm90IGNvbnRhaW46ICIsICp2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIENSQVNIKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBib29sIHN1Y2Nl
c3MgPSAoKHZhbHVlVHlwZSB8IHR5cGUpID09IHR5cGUpCisgICAgICAgICAgICAgICAgICAgICAg
ICAmJiAoIWNvbnN0YW50VmFsdWUgfHwgY29uc3RhbnRWYWx1ZSA9PSB2YWx1ZSk7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG4oImhpZ2hQYXJlbnRJbmRleDogIiwgaGlnaFBhcmVudEluZGV4KTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiaGlnaENoaWxkSW5kZXg6ICIsIGhpZ2hDaGlsZElu
ZGV4KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygidmFsdWVUeXBlID0gIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBkdW1wU3BlY3VsYXRpb24oV1RGOjpkYXRhRmlsZSgp
LCB2YWx1ZVR5cGUpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigidmFsdWUgPSAiLCB2YWx1ZSk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coImV4cGVjdGVkIHR5cGUgPSAiKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGR1bXBTcGVjdWxhdGlvbihXVEY6OmRhdGFGaWxlKCksIHR5cGUp
OworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiXG4iKTsKKworICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiY29uc3RhbnQgdmFsdWUgPSAiLCBjb25zdGFudFZhbHVlKTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKGR1bXApOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCiAgICAgYm9v
bCBjb21waWxlTm9kZSh1bnNpZ25lZCBub2RlSW5kZXgpCiAgICAgewogICAgICAgICBpZiAoIW1f
c3RhdGUuaXNWYWxpZCgpKSB7CkBAIC01MjcsNiArNzA2LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
bV9pbnRlcnByZXRlci5zdGFydEV4ZWN1dGluZygpOwogICAgICAgICBtX2ludGVycHJldGVyLmV4
ZWN1dGVLbm93bkVkZ2VUeXBlcyhtX25vZGUpOwogCisgICAgICAgIGlmIChPcHRpb25zOjp2YWxp
ZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZSgpKQorICAgICAgICAgICAgdmFsaWRhdGVBSVN0
YXRlKG1fbm9kZSk7CisKICAgICAgICAgaWYgKHZhbGlkYXRlREZHRG9lc0dDKSB7CiAgICAgICAg
ICAgICBib29sIGV4cGVjdERvZXNHQyA9IGRvZXNHQyhtX2dyYXBoLCBtX25vZGUpOwogICAgICAg
ICAgICAgbV9vdXQuc3RvcmUobV9vdXQuY29uc3RCb29sKGV4cGVjdERvZXNHQyksIG1fb3V0LmFi
c29sdXRlKHZtKCkuaGVhcC5hZGRyZXNzT2ZFeHBlY3REb2VzR0MoKSkpOwpAQCAtMTUwMyw3ICsx
Njg1LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgRlRMX1RZUEVfQ0hFQ0soCiAgICAgICAg
ICAgICAgICAganNWYWx1ZVZhbHVlKHZhbHVlKSwgbV9ub2RlLT5jaGlsZDEoKSwgU3BlY0J5dGVj
b2RlUmVhbE51bWJlciwKLSAgICAgICAgICAgICAgICBpc05vdEludDMyKHZhbHVlLCBwcm92ZW5U
eXBlKG1fbm9kZS0+Y2hpbGQxKCkpICYgflNwZWNEb3VibGVSZWFsKSk7CisgICAgICAgICAgICAg
ICAgaXNOb3RJbnQzMih2YWx1ZS8qLCBwcm92ZW5UeXBlKG1fbm9kZS0+Y2hpbGQxKCkpICYgflNw
ZWNEb3VibGVSZWFsKi8pKTsKICAgICAgICAgICAgIFZhbHVlRnJvbUJsb2NrIHNsb3dSZXN1bHQg
PSBtX291dC5hbmNob3IobV9vdXQuaW50VG9Eb3VibGUodW5ib3hJbnQzMih2YWx1ZSkpKTsKICAg
ICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgICAgIApAQCAtMTUx
NzMsNyArMTUzNTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIlZh
bHVlIG5vdCBkZWZpbmVkIik7CisgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsIG1h
a2VTdHJpbmcoIlZhbHVlIG5vdCBkZWZpbmVkOiAiLCBTdHJpbmc6Om51bWJlcihlZGdlLm5vZGUo
KS0+aW5kZXgoKSkpLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CkBAIC0xNzE5OSw2ICsxNzM4MSwxMCBAQCBwcml2YXRlOgogICAgIE5vZGVPcmlnaW4gbV9vcmln
aW47CiAgICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7CiAgICAgTm9kZSogbV9ub2RlOworCisgICAg
SGFzaE1hcDxOb2RlKiwgTm9kZVNldD4gbV9saXZlSW5Ub05vZGU7CisgICAgSGFzaE1hcDxOb2Rl
KiwgQWJzdHJhY3RWYWx1ZT4gbV9jaGVja2VkTm9kZXM7CisgICAgU3RyaW5nIG1fZ3JhcGhEdW1w
OwogfTsKIAogfSAvLyBhbm9ueW1vdXMgbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMjQzMTkxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4Niw2
ICszODYsOCBAQCBzdGF0aWMgdm9pZCBjb3JyZWN0T3B0aW9ucygpCiAKIHN0YXRpYyB2b2lkIHJl
Y29tcHV0ZURlcGVuZGVudE9wdGlvbnMoKQogeworICAgIE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJh
Y3RJbnRlcnByZXRlclN0YXRlKCkgPSAxOworCiAjaWYgIWRlZmluZWQoTkRFQlVHKQogICAgIE9w
dGlvbnM6OnZhbGlkYXRlREZHRXhjZXB0aW9uSGFuZGxpbmcoKSA9IHRydWU7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDI0MzE5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtNTEwLDYgKzUxMCw3IEBAIGNvbnN0ZXhwciBib29sIGVuYWJsZVdlYkFzc2VtYmx5
U3RyZWFtaW4KICAgICB2KHVuc2lnbmVkLCB0aHJlc2hvbGRGb3JHbG9iYWxMZXhpY2FsQmluZGlu
Z0Vwb2NoLCBVSU5UX01BWCwgTm9ybWFsLCAiVGhyZXNob2xkIGZvciBnbG9iYWwgbGV4aWNhbCBi
aW5kaW5nIGVwb2NoLiBJZiB0aGUgZXBvY2ggcmVhY2hlcyB0byB0aGlzIHZhbHVlLCBDb2RlQmxv
Y2sgbWV0YWRhdGEgZm9yIHNjb3BlIG9wZXJhdGlvbnMgd2lsbCBiZSByZXZpc2VkIGdsb2JhbGx5
LiBJdCBuZWVkcyB0byBiZSBncmVhdGVyIHRoYW4gMS4iKSBcCiAgICAgdihvcHRpb25TdHJpbmcs
IGRpc2tDYWNoZVBhdGgsIG51bGxwdHIsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKICAgICB2KGJv
b2wsIGZvcmNlRGlza0NhY2hlLCBmYWxzZSwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAorICAgIHYo
Ym9vbCwgdmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUsIGZhbHNlLCBSZXN0cmljdGVk
LCBudWxscHRyKSBcCiAKIAogZW51bSBPcHRpb25FcXVpdmFsZW5jZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365910</attachid>
            <date>2019-03-25 15:44:38 -0700</date>
            <delta_ts>2019-03-25 17:23:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>9477</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE5LTAzLTI1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEZUTDogRW1pdCBjb2RlIHRvIHZhbGlkYXRlIEFJJ3Mgc3RhdGUgd2hlbiBydW5uaW5nIHRoZSBj
b21waWxlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU5MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MDAzNDIyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBj
b2RlIHRoYXQgYmV0d2VlbiB0aGUgZXhlY3V0aW9uIG9mIGVhY2ggbm9kZSB0aGF0IHZhbGlkYXRl
cworICAgICAgICB0aGUgdHlwZXMgdGhhdCBBSSBwcm92ZXMuIFRoaXMgb3B0aW9uIGlzIHRvbyBl
eHBlbnNpdmUgdG8gdHVybiBvbiBmb3Igb3VyCisgICAgICAgIHJlZ3Jlc3Npb24gdGVzdGluZywg
YnV0IHdlIHRoaW5rIGl0IHdpbGwgYmUgdmFsdWFibGUgaW4gb3RoZXIgdHlwZXMgb2YgcnVubmlu
ZworICAgICAgICBtb2Rlcywgc3VjaCBhcyB3aGVuIHJ1bm5pbmcgd2l0aCBhIGZ1enplci4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIG9wdGlvbnMgdG8gb25seSBwcm9i
YWJpbGlzdGljYWxseSBydW4gdGhpcyB2YWxpZGF0aW9uCisgICAgICAgIGFmdGVyIHRoZSBleGVj
dXRpb24gb2YgZWFjaCBub2RlLiBBcyB0aGUgcHJvYmFiaWxpdHkgaXMgbG93ZXJlZCwgdGhlcmUg
aXMKKyAgICAgICAgbGVzcyBvZiBhIHBlcmYgaGl0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBqdXN0IGFkZHMgdGhpcyB2YWxpZGF0aW9uIGluIHRoZSBGVEwuIEEgZm9sbG93LXVwIHBh
dGNoIHdpbGwgbGFuZAorICAgICAgICBpdCBpbiB0aGUgREZHIHRvbzogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjIxOQorCisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Okxvd2Vy
REZHVG9CMyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVC
bG9jayk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlT
dGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SlNWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisKIDIwMTktMDMtMjUgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV9v
cCA9PSBDb21wYXJlU3RyaWN0RXEgaW4gSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbXBhcmVF
cVB0cihKU0M6OkRGRzo6RnJvemVuVmFsdWUgKiwgSlNDOjpERkc6OkVkZ2UpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
NDM0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJERkdEb2VzR0MuaCIK
ICNpbmNsdWRlICJERkdEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaCIKKyNpbmNsdWRlICJERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCkBAIC04Miw2ICs4Myw3IEBACiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1
ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCkBAIC0xNTUsNiArMTU3LDI5IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2ludGVycHJldGVyKHN0YXRlLmdyYXBoLCBtX3N0YXRlKQogICAgICAgICAs
IG1faW5kZXhNYXNraW5nTW9kZShPcHRpb25zOjplbmFibGVTcGVjdHJlTWl0aWdhdGlvbnMoKSA/
ICBJbmRleE1hc2tpbmdFbmFibGVkIDogSW5kZXhNYXNraW5nRGlzYWJsZWQpCiAgICAgeworICAg
ICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSkgewor
ICAgICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9ncmFwaCk7CisKKyAgICAgICAg
ICAgIC8vIFdlIG9ubHkgdXNlIG5vZGUgbGl2ZW5lc3MgaGVyZSwgbm90IGNvbWJpbmVkIGxpdmVu
ZXNzLCBhcyB3ZSBvbmx5IHRyYWNrCisgICAgICAgICAgICAvLyBBSSBzdGF0ZSBmb3IgbGl2ZSBu
b2Rlcy4KKyAgICAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIE5vZGVTZXQgbGl2ZTsK
KworICAgICAgICAgICAgICAgIGZvciAoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgOiBibG9jay0+
c3NhLT5saXZlQXRUYWlsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmtpbmQoKSA9
PSBOb2RlRmxvd1Byb2plY3Rpb246OlByaW1hcnkpCisgICAgICAgICAgICAgICAgICAgICAgICBs
aXZlLmFkZFZvaWQobm9kZS5ub2RlKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTsgKSB7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7CisgICAgICAgICAgICAgICAg
ICAgIGxpdmUucmVtb3ZlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9D
aGlsZHJlbihub2RlLCBbJl0gKEVkZ2UgY2hpbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxpdmUuYWRkKGNoaWxkLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgICAgICAgICBtX2xpdmVJblRvTm9kZS5hZGQobm9kZSwgbGl2ZSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHZvaWQg
bG93ZXIoKQpAQCAtNDczLDYgKzQ5OCw4IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBjcmFzaCht
X2hpZ2hCbG9jaywgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKwor
ICAgICAgICBtX2FpQ2hlY2tlZE5vZGVzLmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBtX2F2
YWlsYWJpbGl0eUNhbGN1bGF0b3IuYmVnaW5CbG9jayhtX2hpZ2hCbG9jayk7CiAgICAgICAgIApA
QCAtNTA4LDYgKzUzNSwxMDUgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAorICAgIHZv
aWQgdmFsaWRhdGVBSVN0YXRlKE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBpZiAoIW1fZ3Jh
cGhEdW1wKSB7CisgICAgICAgICAgICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgICAgICAg
ICBtX2dyYXBoLmR1bXAob3V0KTsKKyAgICAgICAgICAgIG1fZ3JhcGhEdW1wID0gb3V0LnRvU3Ry
aW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAg
ICAgY2FzZSBNb3ZIaW50OgorICAgICAgICBjYXNlIFpvbWJpZUhpbnQ6CisgICAgICAgIGNhc2Ug
SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBMYXp5SlNDb25zdGFudDoKKyAgICAgICAgY2FzZSBE
b3VibGVDb25zdGFudDoKKyAgICAgICAgY2FzZSBJbnQ1MkNvbnN0YW50OgorICAgICAgICBjYXNl
IEdldFN0YWNrOgorICAgICAgICBjYXNlIFB1dFN0YWNrOgorICAgICAgICBjYXNlIEtpbGxTdGFj
azoKKyAgICAgICAgY2FzZSBFeGl0T0s6CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEJlZm9y
ZSB3ZSBleGVjdXRlIG5vZGUuCisgICAgICAgIE5vZGVTZXQmIGxpdmUgPSBtX2xpdmVJblRvTm9k
ZS5maW5kKG5vZGUpLT52YWx1ZTsKKyAgICAgICAgdW5zaWduZWQgaGlnaFBhcmVudEluZGV4ID0g
bm9kZS0+aW5kZXgoKTsKKyAgICAgICAgeworICAgICAgICAgICAgdWludDY0X3QgaGFzaCA9IFdU
Rjo6aW50SGFzaChoaWdoUGFyZW50SW5kZXgpOworICAgICAgICAgICAgaWYgKGhhc2ggPj0gc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KChzdGF0aWNfY2FzdDxkb3VibGU+KHN0ZDo6bnVtZXJpY19saW1p
dHM8dW5zaWduZWQ+OjptYXgoKSkgKyAxKSAqIE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJhY3RJbnRl
cnByZXRlclN0YXRlUHJvYmFiaWxpdHkoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgZm9yIChOb2RlKiBub2RlIDogbGl2ZSkgeworICAgICAgICAgICAg
aWYgKG5vZGUtPmlzUGhhbnRvbUFsbG9jYXRpb24oKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgPT0gQ2hlY2tJbkJvdW5kcykKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSB2YWx1ZSA9
IG1faW50ZXJwcmV0ZXIuZm9yTm9kZShub2RlKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICBhdXRvIGl0ZXIgPSBtX2FpQ2hlY2tlZE5vZGVzLmZpbmQobm9kZSk7CisgICAgICAgICAg
ICAgICAgaWYgKGl0ZXIgIT0gbV9haUNoZWNrZWROb2Rlcy5lbmQoKSkgeworICAgICAgICAgICAg
ICAgICAgICBBYnN0cmFjdFZhbHVlIGNoZWNrZWRWYWx1ZSA9IGl0ZXItPnZhbHVlOworICAgICAg
ICAgICAgICAgICAgICBpZiAoY2hlY2tlZFZhbHVlID09IHZhbHVlKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoISh2YWx1ZS5tX3R5cGUgJiBTcGVjQ2VsbCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgbV9haUNoZWNrZWROb2Rlcy5zZXQobm9kZSwgdmFs
dWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBGbHVzaEZvcm1hdCBmbHVzaEZvcm1h
dDsKKyAgICAgICAgICAgIExWYWx1ZSBpbnB1dDsKKyAgICAgICAgICAgIGlmIChub2RlLT5oYXNK
U1Jlc3VsdCgpKSB7CisgICAgICAgICAgICAgICAgaW5wdXQgPSBsb3dKU1ZhbHVlKEVkZ2Uobm9k
ZSwgVW50eXBlZFVzZSkpOworICAgICAgICAgICAgICAgIGZsdXNoRm9ybWF0ID0gRmx1c2hlZEpT
VmFsdWU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmhhc0RvdWJsZVJlc3VsdCgpKSB7
CisgICAgICAgICAgICAgICAgaW5wdXQgPSBib3hEb3VibGUobG93RG91YmxlKEVkZ2Uobm9kZSwg
RG91YmxlUmVwVXNlKSkpOworICAgICAgICAgICAgICAgIGZsdXNoRm9ybWF0ID0gRmx1c2hlZERv
dWJsZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aGFzSW50NTJSZXN1bHQoKSkgewor
ICAgICAgICAgICAgICAgIGlucHV0ID0gc3RyaWN0SW50NTJUb0pTVmFsdWUobG93U3RyaWN0SW50
NTIoRWRnZShub2RlLCBJbnQ1MlJlcFVzZSkpKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvcm1h
dCA9IEZsdXNoZWRJbnQ1MjsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworCisKKyAgICAgICAgICAgIHVuc2lnbmVkIGhpZ2hDaGlsZEluZGV4ID0gbm9kZS0+
aW5kZXgoKTsKKworICAgICAgICAgICAgU3RyaW5nIGdyYXBoRHVtcCA9IG1fZ3JhcGhEdW1wOwor
CisgICAgICAgICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBv
aW50KFZvaWQpOworICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5v
bmUoKTsKKyAgICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9
IHRydWU7CisgICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5wdXQp
OworICAgICAgICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAg
ICAgICAgICAgR1BSUmVnIHJlZyA9IHBhcmFtc1swXS5ncHIoKTsKKyAgICAgICAgICAgICAgICBq
aXQucHJvYmUoWz1dIChQcm9iZTo6Q29udGV4dCYgY29udGV4dCkgeworICAgICAgICAgICAgICAg
ICAgICBKU1ZhbHVlIGlucHV0ID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnRleHQuZ3ByKHJlZykpOyAK
KworICAgICAgICAgICAgICAgICAgICBhdXRvIGR1bXBBbmRDcmFzaCA9IFsmXSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIlZhbGlkYXRpb24gZmFpbGVkIGF0IG5vZGU6IEAi
LCBoaWdoUGFyZW50SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJG
YWlsZWQgdmFsaWRhdGluZyBsaXZlIHZhbHVlOiBAIiwgaGlnaENoaWxkSW5kZXgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG4oIkV4cGVjdGVkIEFJIHZhbHVlID0gIiwgdmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIHZhbHVlID0gIiwgaW5wdXQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhTG9nTG4oZ3JhcGhEdW1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENSQVNIKCk7Cisg
ICAgICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS52
YWxpZGF0ZU9TUkVudHJ5VmFsdWUoaW5wdXQsIGZsdXNoRm9ybWF0KSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGR1bXBBbmRDcmFzaCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKICAgICBib29sIGNvbXBpbGVOb2RlKHVuc2lnbmVk
IG5vZGVJbmRleCkKICAgICB7CiAgICAgICAgIGlmICghbV9zdGF0ZS5pc1ZhbGlkKCkpIHsKQEAg
LTUyNyw2ICs2NTMsOSBAQCBwcml2YXRlOgogICAgICAgICBtX2ludGVycHJldGVyLnN0YXJ0RXhl
Y3V0aW5nKCk7CiAgICAgICAgIG1faW50ZXJwcmV0ZXIuZXhlY3V0ZUtub3duRWRnZVR5cGVzKG1f
bm9kZSk7CiAKKyAgICAgICAgaWYgKE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRl
clN0YXRlKCkpCisgICAgICAgICAgICB2YWxpZGF0ZUFJU3RhdGUobV9ub2RlKTsKKwogICAgICAg
ICBpZiAodmFsaWRhdGVERkdEb2VzR0MpIHsKICAgICAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dD
ID0gZG9lc0dDKG1fZ3JhcGgsIG1fbm9kZSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZShtX291
dC5jb25zdEJvb2woZXhwZWN0RG9lc0dDKSwgbV9vdXQuYWJzb2x1dGUodm0oKS5oZWFwLmFkZHJl
c3NPZkV4cGVjdERvZXNHQygpKSk7CkBAIC0xNTE4Miw3ICsxNTMxMSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBE
RkdfQ1JBU0gobV9ncmFwaCwgbV9ub2RlLCAiVmFsdWUgbm90IGRlZmluZWQiKTsKKyAgICAgICAg
REZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgbWFrZVN0cmluZygiVmFsdWUgbm90IGRlZmluZWQ6
ICIsIFN0cmluZzo6bnVtYmVyKGVkZ2Uubm9kZSgpLT5pbmRleCgpKSkuYXNjaWkoKS5kYXRhKCkp
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTE3MjA4LDYgKzE3MzM3LDExIEBAIHBy
aXZhdGU6CiAgICAgTm9kZU9yaWdpbiBtX29yaWdpbjsKICAgICB1bnNpZ25lZCBtX25vZGVJbmRl
eDsKICAgICBOb2RlKiBtX25vZGU7CisKKyAgICAvLyBUaGVzZSBhcmUgdXNlZCBmb3IgdmFsaWRh
dGluZyBBSSBzdGF0ZS4KKyAgICBIYXNoTWFwPE5vZGUqLCBOb2RlU2V0PiBtX2xpdmVJblRvTm9k
ZTsKKyAgICBIYXNoTWFwPE5vZGUqLCBBYnN0cmFjdFZhbHVlPiBtX2FpQ2hlY2tlZE5vZGVzOwor
ICAgIFN0cmluZyBtX2dyYXBoRHVtcDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjQz
NDYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MTAsNiArNTEwLDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1i
bHlTdHJlYW1pbgogICAgIHYodW5zaWduZWQsIHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5k
aW5nRXBvY2gsIFVJTlRfTUFYLCBOb3JtYWwsICJUaHJlc2hvbGQgZm9yIGdsb2JhbCBsZXhpY2Fs
IGJpbmRpbmcgZXBvY2guIElmIHRoZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMgdmFsdWUsIENvZGVC
bG9jayBtZXRhZGF0YSBmb3Igc2NvcGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJldmlzZWQgZ2xvYmFs
bHkuIEl0IG5lZWRzIHRvIGJlIGdyZWF0ZXIgdGhhbiAxLiIpIFwKICAgICB2KG9wdGlvblN0cmlu
ZywgZGlza0NhY2hlUGF0aCwgbnVsbHB0ciwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAogICAgIHYo
Ym9vbCwgZm9yY2VEaXNrQ2FjaGUsIGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCisgICAg
dihib29sLCB2YWxpZGF0ZUFic3RyYWN0SW50ZXJwcmV0ZXJTdGF0ZSwgZmFsc2UsIFJlc3RyaWN0
ZWQsIG51bGxwdHIpIFwKKyAgICB2KGRvdWJsZSwgdmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVy
U3RhdGVQcm9iYWJpbGl0eSwgMC41LCBOb3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlv
bkVxdWl2YWxlbmNlIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365926</attachid>
            <date>2019-03-25 17:23:40 -0700</date>
            <delta_ts>2019-03-26 17:08:52 -0700</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>10596</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjQzNDY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBA
CisyMDE5LTAzLTI1ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IEZUTDogRW1pdCBjb2RlIHRvIHZhbGlkYXRlIEFJJ3Mgc3RhdGUgd2hlbiBydW5uaW5nIHRoZSBj
b21waWxlZCBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTU5MjQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ5MDAzNDIyPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBj
b2RlIHRoYXQgYmV0d2VlbiB0aGUgZXhlY3V0aW9uIG9mIGVhY2ggbm9kZSB0aGF0IHZhbGlkYXRl
cworICAgICAgICB0aGUgdHlwZXMgdGhhdCBBSSBwcm92ZXMuIFRoaXMgb3B0aW9uIGlzIHRvbyBl
eHBlbnNpdmUgdG8gdHVybiBvbiBmb3Igb3VyCisgICAgICAgIHJlZ3Jlc3Npb24gdGVzdGluZywg
YnV0IHdlIHRoaW5rIGl0IHdpbGwgYmUgdmFsdWFibGUgaW4gb3RoZXIgdHlwZXMgb2YgcnVubmlu
ZworICAgICAgICBtb2Rlcywgc3VjaCBhcyB3aGVuIHJ1bm5pbmcgd2l0aCBhIGZ1enplci4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIG9wdGlvbnMgdG8gb25seSBwcm9i
YWJpbGlzdGljYWxseSBydW4gdGhpcyB2YWxpZGF0aW9uCisgICAgICAgIGFmdGVyIHRoZSBleGVj
dXRpb24gb2YgZWFjaCBub2RlLiBBcyB0aGUgcHJvYmFiaWxpdHkgaXMgbG93ZXJlZCwgdGhlcmUg
aXMKKyAgICAgICAgbGVzcyBvZiBhIHBlcmYgaGl0LgorICAgICAgICAKKyAgICAgICAgVGhpcyBw
YXRjaCBqdXN0IGFkZHMgdGhpcyB2YWxpZGF0aW9uIGluIHRoZSBGVEwuIEEgZm9sbG93LXVwIHBh
dGNoIHdpbGwgbGFuZAorICAgICAgICBpdCBpbiB0aGUgREZHIHRvbzogaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NjIxOQorCisgICAgICAgICogZnRsL0ZUTExvd2Vy
REZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6Okxvd2Vy
REZHVG9CMyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVC
bG9jayk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OnZhbGlkYXRlQUlT
dGF0ZSk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOb2Rl
KToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6bG93SlNWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisKIDIwMTktMDMtMjUgIEtlaXRoIE1pbGxlciAg
PGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogbV9v
cCA9PSBDb21wYXJlU3RyaWN0RXEgaW4gSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbXBhcmVF
cVB0cihKU0M6OkRGRzo6RnJvemVuVmFsdWUgKiwgSlNDOjpERkc6OkVkZ2UpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAy
NDM0NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJERkdEb2VzR0MuaCIK
ICNpbmNsdWRlICJERkdEb21pbmF0b3JzLmgiCiAjaW5jbHVkZSAiREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuaCIKKyNpbmNsdWRlICJERkdMaXZlbmVzc0FuYWx5c2lzUGhhc2UuaCIKICNpbmNsdWRl
ICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCkBAIC04Miw2ICs4Myw3IEBACiAjaW5j
bHVkZSAiSlNMZXhpY2FsRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU01hcC5oIgogI2luY2x1
ZGUgIk9wZXJhbmRzSW5saW5lcy5oIgorI2luY2x1ZGUgIlByb2JlQ29udGV4dC5oIgogI2luY2x1
ZGUgIlJlZ0V4cE9iamVjdC5oIgogI2luY2x1ZGUgIlNjb3BlZEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIlNjb3BlZEFyZ3VtZW50c1RhYmxlLmgiCkBAIC0xNTUsNiArMTU3LDI5IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX2ludGVycHJldGVyKHN0YXRlLmdyYXBoLCBtX3N0YXRlKQogICAgICAgICAs
IG1faW5kZXhNYXNraW5nTW9kZShPcHRpb25zOjplbmFibGVTcGVjdHJlTWl0aWdhdGlvbnMoKSA/
ICBJbmRleE1hc2tpbmdFbmFibGVkIDogSW5kZXhNYXNraW5nRGlzYWJsZWQpCiAgICAgeworICAg
ICAgICBpZiAoT3B0aW9uczo6dmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGUoKSkgewor
ICAgICAgICAgICAgcGVyZm9ybUxpdmVuZXNzQW5hbHlzaXMobV9ncmFwaCk7CisKKyAgICAgICAg
ICAgIC8vIFdlIG9ubHkgdXNlIG5vZGUgbGl2ZW5lc3MgaGVyZSwgbm90IGNvbWJpbmVkIGxpdmVu
ZXNzLCBhcyB3ZSBvbmx5IHRyYWNrCisgICAgICAgICAgICAvLyBBSSBzdGF0ZSBmb3IgbGl2ZSBu
b2Rlcy4KKyAgICAgICAgICAgIGZvciAoREZHOjpCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGgu
YmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgeworICAgICAgICAgICAgICAgIE5vZGVTZXQgbGl2ZTsK
KworICAgICAgICAgICAgICAgIGZvciAoTm9kZUZsb3dQcm9qZWN0aW9uIG5vZGUgOiBibG9jay0+
c3NhLT5saXZlQXRUYWlsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmtpbmQoKSA9
PSBOb2RlRmxvd1Byb2plY3Rpb246OlByaW1hcnkpCisgICAgICAgICAgICAgICAgICAgICAgICBs
aXZlLmFkZFZvaWQobm9kZS5ub2RlKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IGJsb2NrLT5zaXplKCk7IGktLTsgKSB7CisgICAgICAg
ICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaSk7CisgICAgICAgICAgICAgICAg
ICAgIGxpdmUucmVtb3ZlKG5vZGUpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9D
aGlsZHJlbihub2RlLCBbJl0gKEVkZ2UgY2hpbGQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxpdmUuYWRkVm9pZChjaGlsZC5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9saXZlSW5Ub05vZGUuYWRkKG5vZGUsIGxpdmUpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2
b2lkIGxvd2VyKCkKQEAgLTQ3Myw2ICs0OTgsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgY3Jh
c2gobV9oaWdoQmxvY2ssIG51bGxwdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CisKKyAgICAgICAgbV9haUNoZWNrZWROb2Rlcy5jbGVhcigpOwogICAgICAgICAKICAgICAgICAg
bV9hdmFpbGFiaWxpdHlDYWxjdWxhdG9yLmJlZ2luQmxvY2sobV9oaWdoQmxvY2spOwogICAgICAg
ICAKQEAgLTUwOCw2ICs1MzUsMTI5IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAg
ICB2b2lkIHZhbGlkYXRlQUlTdGF0ZShOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgaWYgKCFt
X2dyYXBoRHVtcCkgeworICAgICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgICAg
ICAgICAgbV9ncmFwaC5kdW1wKG91dCk7CisgICAgICAgICAgICBtX2dyYXBoRHVtcCA9IG91dC50
b1N0cmluZygpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7Cisg
ICAgICAgIGNhc2UgTW92SGludDoKKyAgICAgICAgY2FzZSBab21iaWVIaW50OgorICAgICAgICBj
YXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgTGF6eUpTQ29uc3RhbnQ6CisgICAgICAgIGNh
c2UgRG91YmxlQ29uc3RhbnQ6CisgICAgICAgIGNhc2UgSW50NTJDb25zdGFudDoKKyAgICAgICAg
Y2FzZSBHZXRTdGFjazoKKyAgICAgICAgY2FzZSBQdXRTdGFjazoKKyAgICAgICAgY2FzZSBLaWxs
U3RhY2s6CisgICAgICAgIGNhc2UgRXhpdE9LOgorICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBC
ZWZvcmUgd2UgZXhlY3V0ZSBub2RlLgorICAgICAgICBOb2RlU2V0JiBsaXZlID0gbV9saXZlSW5U
b05vZGUuZmluZChub2RlKS0+dmFsdWU7CisgICAgICAgIHVuc2lnbmVkIGhpZ2hQYXJlbnRJbmRl
eCA9IG5vZGUtPmluZGV4KCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IGhhc2gg
PSBXVEY6OmludEhhc2goaGlnaFBhcmVudEluZGV4KTsKKyAgICAgICAgICAgIGlmIChoYXNoID49
IHN0YXRpY19jYXN0PHVpbnQ2NF90Pigoc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGQ6Om51bWVyaWNf
bGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpICsgMSkgKiBPcHRpb25zOjp2YWxpZGF0ZUFic3RyYWN0
SW50ZXJwcmV0ZXJTdGF0ZVByb2JhYmlsaXR5KCkpKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGZvciAoTm9kZSogbm9kZSA6IGxpdmUpIHsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5pc1BoYW50b21BbGxvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IENoZWNrSW5Cb3VuZHMpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFs
dWUgPSBtX2ludGVycHJldGVyLmZvck5vZGUobm9kZSk7CisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgYXV0byBpdGVyID0gbV9haUNoZWNrZWROb2Rlcy5maW5kKG5vZGUpOworICAgICAg
ICAgICAgICAgIGlmIChpdGVyICE9IG1fYWlDaGVja2VkTm9kZXMuZW5kKCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgQWJzdHJhY3RWYWx1ZSBjaGVja2VkVmFsdWUgPSBpdGVyLT52YWx1ZTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZWRWYWx1ZSA9PSB2YWx1ZSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKCEodmFsdWUubV90eXBlICYgU3BlY0NlbGwpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1fYWlDaGVja2VkTm9kZXMuc2V0KG5vZGUs
IHZhbHVlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgRmx1c2hGb3JtYXQgZmx1c2hG
b3JtYXQ7CisgICAgICAgICAgICBMVmFsdWUgaW5wdXQ7CisgICAgICAgICAgICBpZiAobm9kZS0+
aGFzSlNSZXN1bHQoKSkgeworICAgICAgICAgICAgICAgIGlucHV0ID0gbG93SlNWYWx1ZShFZGdl
KG5vZGUsIFVudHlwZWRVc2UpKTsKKyAgICAgICAgICAgICAgICBmbHVzaEZvcm1hdCA9IEZsdXNo
ZWRKU1ZhbHVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5oYXNEb3VibGVSZXN1bHQo
KSkgeworICAgICAgICAgICAgICAgIGlucHV0ID0gbG93RG91YmxlKEVkZ2Uobm9kZSwgRG91Ymxl
UmVwVXNlKSk7CisgICAgICAgICAgICAgICAgZmx1c2hGb3JtYXQgPSBGbHVzaGVkRG91YmxlOwor
ICAgICAgICAgICAgfSBlbHNlIGlmIChub2RlLT5oYXNJbnQ1MlJlc3VsdCgpKSB7CisgICAgICAg
ICAgICAgICAgaW5wdXQgPSBzdHJpY3RJbnQ1MlRvSlNWYWx1ZShsb3dTdHJpY3RJbnQ1MihFZGdl
KG5vZGUsIEludDUyUmVwVXNlKSkpOworICAgICAgICAgICAgICAgIGZsdXNoRm9ybWF0ID0gRmx1
c2hlZEludDUyOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIHVuc2lnbmVkIGhpZ2hDaGlsZEluZGV4ID0gbm9kZS0+aW5kZXgoKTsK
KworICAgICAgICAgICAgU3RyaW5nIGdyYXBoRHVtcCA9IG1fZ3JhcGhEdW1wOworCisgICAgICAg
ICAgICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBtX291dC5wYXRjaHBvaW50KFZvaWQp
OworICAgICAgICAgICAgcGF0Y2hwb2ludC0+ZWZmZWN0cyA9IEVmZmVjdHM6Om5vbmUoKTsKKyAg
ICAgICAgICAgIHBhdGNocG9pbnQtPmVmZmVjdHMud3JpdGVzTG9jYWxTdGF0ZSA9IHRydWU7Cisg
ICAgICAgICAgICBwYXRjaHBvaW50LT5hcHBlbmRTb21lUmVnaXN0ZXIoaW5wdXQpOworICAgICAg
ICAgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNv
bnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CisgICAgICAgICAgICAgICAg
R1BSUmVnIHJlZyA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICAgICAgRlBSUmVnIGZwUmVn
ID0gSW52YWxpZEZQUlJlZzsKKyAgICAgICAgICAgICAgICBpZiAoZmx1c2hGb3JtYXQgPT0gRmx1
c2hlZERvdWJsZSkKKyAgICAgICAgICAgICAgICAgICAgZnBSZWcgPSBwYXJhbXNbMF0uZnByKCk7
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZWcgPSBwYXJhbXNb
MF0uZ3ByKCk7CisgICAgICAgICAgICAgICAgaml0LnByb2JlKFs9XSAoUHJvYmU6OkNvbnRleHQm
IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZSBpbnB1dDsKKyAgICAgICAg
ICAgICAgICAgICAgZG91YmxlIGRvdWJsZUlucHV0OworCisgICAgICAgICAgICAgICAgICAgIGF1
dG8gZHVtcEFuZENyYXNoID0gWyZdIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dM
bigiVmFsaWRhdGlvbiBmYWlsZWQgYXQgbm9kZTogQCIsIGhpZ2hQYXJlbnRJbmRleCk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4oIkZhaWxlZCB2YWxpZGF0aW5nIGxpdmUgdmFs
dWU6IEAiLCBoaWdoQ2hpbGRJbmRleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9n
TG4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2dMbigiRXhwZWN0ZWQgQUkgdmFs
dWUgPSAiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmx1c2hGb3JtYXQg
IT0gRmx1c2hlZERvdWJsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nTG4o
IlVuZXhwZWN0ZWQgdmFsdWUgPSAiLCBpbnB1dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKCJVbmV4cGVjdGVkIGRv
dWJsZSB2YWx1ZSA9ICIsIGRvdWJsZUlucHV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2dMbigpOworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxvZ0xuKGdyYXBoRHVtcCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICAgICAgICAgICAgICB9
OworCisgICAgICAgICAgICAgICAgICAgIGlmIChmbHVzaEZvcm1hdCA9PSBGbHVzaGVkRG91Ymxl
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGVJbnB1dCA9IGNvbnRleHQuZnByKGZw
UmVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHR5cGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoIXN0ZDo6aXNuYW4oZG91YmxlSW5wdXQpKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzcGVjdWxhdGlvbkZyb21WYWx1ZShqc0RvdWJs
ZU51bWJlcihkb3VibGVJbnB1dCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
aXNJbXB1cmVOYU4oZG91YmxlSW5wdXQpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5
cGUgPSBTcGVjRG91YmxlSW1wdXJlTmFOOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBTcGVjRG91YmxlUHVyZU5hTjsKKwor
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZS5jb3VsZEJlVHlwZSh0eXBlKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wQW5kQ3Jhc2goKTsKKyAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID0gSlNWYWx1ZTo6
ZGVjb2RlKGNvbnRleHQuZ3ByKHJlZykpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
dmFsdWUudmFsaWRhdGVPU1JFbnRyeVZhbHVlKGlucHV0LCBmbHVzaEZvcm1hdCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZHVtcEFuZENyYXNoKCk7CisgICAgICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9CisKICAgICBib29sIGNvbXBpbGVOb2RlKHVuc2lnbmVkIG5vZGVJbmRleCkKICAgICB7CiAg
ICAgICAgIGlmICghbV9zdGF0ZS5pc1ZhbGlkKCkpIHsKQEAgLTUyNyw2ICs2NzcsOSBAQCBwcml2
YXRlOgogICAgICAgICBtX2ludGVycHJldGVyLnN0YXJ0RXhlY3V0aW5nKCk7CiAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZXhlY3V0ZUtub3duRWRnZVR5cGVzKG1fbm9kZSk7CiAKKyAgICAgICAgaWYg
KE9wdGlvbnM6OnZhbGlkYXRlQWJzdHJhY3RJbnRlcnByZXRlclN0YXRlKCkpCisgICAgICAgICAg
ICB2YWxpZGF0ZUFJU3RhdGUobV9ub2RlKTsKKwogICAgICAgICBpZiAodmFsaWRhdGVERkdEb2Vz
R0MpIHsKICAgICAgICAgICAgIGJvb2wgZXhwZWN0RG9lc0dDID0gZG9lc0dDKG1fZ3JhcGgsIG1f
bm9kZSk7CiAgICAgICAgICAgICBtX291dC5zdG9yZShtX291dC5jb25zdEJvb2woZXhwZWN0RG9l
c0dDKSwgbV9vdXQuYWJzb2x1dGUodm0oKS5oZWFwLmFkZHJlc3NPZkV4cGVjdERvZXNHQygpKSk7
CkBAIC0xNTE4Miw3ICsxNTMzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBERkdfQ1JBU0gobV9ncmFwaCwgbV9u
b2RlLCAiVmFsdWUgbm90IGRlZmluZWQiKTsKKyAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1f
bm9kZSwgbWFrZVN0cmluZygiVmFsdWUgbm90IGRlZmluZWQ6ICIsIFN0cmluZzo6bnVtYmVyKGVk
Z2Uubm9kZSgpLT5pbmRleCgpKSkuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiAKQEAgLTE3MjA4LDYgKzE3MzYxLDExIEBAIHByaXZhdGU6CiAgICAgTm9kZU9yaWdp
biBtX29yaWdpbjsKICAgICB1bnNpZ25lZCBtX25vZGVJbmRleDsKICAgICBOb2RlKiBtX25vZGU7
CisKKyAgICAvLyBUaGVzZSBhcmUgdXNlZCBmb3IgdmFsaWRhdGluZyBBSSBzdGF0ZS4KKyAgICBI
YXNoTWFwPE5vZGUqLCBOb2RlU2V0PiBtX2xpdmVJblRvTm9kZTsKKyAgICBIYXNoTWFwPE5vZGUq
LCBBYnN0cmFjdFZhbHVlPiBtX2FpQ2hlY2tlZE5vZGVzOworICAgIFN0cmluZyBtX2dyYXBoRHVt
cDsKIH07CiAKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMjQzNDYwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsNiArNTEw
LDggQEAgY29uc3RleHByIGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIHYodW5z
aWduZWQsIHRocmVzaG9sZEZvckdsb2JhbExleGljYWxCaW5kaW5nRXBvY2gsIFVJTlRfTUFYLCBO
b3JtYWwsICJUaHJlc2hvbGQgZm9yIGdsb2JhbCBsZXhpY2FsIGJpbmRpbmcgZXBvY2guIElmIHRo
ZSBlcG9jaCByZWFjaGVzIHRvIHRoaXMgdmFsdWUsIENvZGVCbG9jayBtZXRhZGF0YSBmb3Igc2Nv
cGUgb3BlcmF0aW9ucyB3aWxsIGJlIHJldmlzZWQgZ2xvYmFsbHkuIEl0IG5lZWRzIHRvIGJlIGdy
ZWF0ZXIgdGhhbiAxLiIpIFwKICAgICB2KG9wdGlvblN0cmluZywgZGlza0NhY2hlUGF0aCwgbnVs
bHB0ciwgUmVzdHJpY3RlZCwgbnVsbHB0cikgXAogICAgIHYoYm9vbCwgZm9yY2VEaXNrQ2FjaGUs
IGZhbHNlLCBSZXN0cmljdGVkLCBudWxscHRyKSBcCisgICAgdihib29sLCB2YWxpZGF0ZUFic3Ry
YWN0SW50ZXJwcmV0ZXJTdGF0ZSwgZmFsc2UsIFJlc3RyaWN0ZWQsIG51bGxwdHIpIFwKKyAgICB2
KGRvdWJsZSwgdmFsaWRhdGVBYnN0cmFjdEludGVycHJldGVyU3RhdGVQcm9iYWJpbGl0eSwgMC41
LCBOb3JtYWwsIG51bGxwdHIpIFwKIAogCiBlbnVtIE9wdGlvbkVxdWl2YWxlbmNlIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>