<?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>181525</bug_id>
          
          <creation_ts>2018-01-11 01:42:34 -0800</creation_ts>
          <short_desc>JITMathIC code in the FTL is wrong when code gets duplicated</short_desc>
          <delta_ts>2018-01-11 14:18:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1388160</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 01:42:34 -0800</bug_when>
    <thetext>B3 may duplicate code for arbitrary reasons. The code in FTLLower should generate a new mathIC per invocation of the watchpoint callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388161</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 01:43:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/36351993&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388166</commentid>
    <comment_count>2</comment_count>
      <attachid>331043</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 01:54:34 -0800</bug_when>
    <thetext>Created attachment 331043
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388322</commentid>
    <comment_count>3</comment_count>
      <attachid>331079</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 11:15:30 -0800</bug_when>
    <thetext>Created attachment 331079
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388325</commentid>
    <comment_count>4</comment_count>
      <attachid>331079</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2018-01-11 11:21:20 -0800</bug_when>
    <thetext>Comment on attachment 331079
patch

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

r=me

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:267
&gt;      JITAddIC* addJITAddIC(ArithProfile*);
&gt;      JITMulIC* addJITMulIC(ArithProfile*);
&gt; -    JITNegIC* addJITNegIC(ArithProfile*);
&gt;      JITSubIC* addJITSubIC(ArithProfile*);
&gt; +    JITNegIC* addJITNegIC(ArithProfile*);
&gt; +
&gt; +    template &lt;typename Generator, typename = typename std::enable_if&lt;std::is_same&lt;Generator, JITAddGenerator&gt;::value&gt;::type&gt;
&gt; +    JITAddIC* addMathIC(ArithProfile* profile) { return addJITAddIC(profile); }
&gt; +
&gt; +    template &lt;typename Generator, typename = typename std::enable_if&lt;std::is_same&lt;Generator, JITSubGenerator&gt;::value&gt;::type&gt;
&gt; +    JITSubIC* addMathIC(ArithProfile* profile) { return addJITSubIC(profile); }
&gt; +
&gt; +    template &lt;typename Generator, typename = typename std::enable_if&lt;std::is_same&lt;Generator, JITMulGenerator&gt;::value&gt;::type&gt;
&gt; +    JITMulIC* addMathIC(ArithProfile* profile) { return addJITMulIC(profile); }
&gt; +
&gt; +    template &lt;typename Generator, typename = typename std::enable_if&lt;std::is_same&lt;Generator, JITNegGenerator&gt;::value&gt;::type&gt;
&gt; +    JITNegIC* addMathIC(ArithProfile* profile) { return addJITNegIC(profile); }

The declarations were alphabetical.  Now the declarations and template declarations have different orders and don&apos;t appear to follow any order.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388332</commentid>
    <comment_count>5</comment_count>
      <attachid>331079</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-01-11 11:25:33 -0800</bug_when>
    <thetext>Comment on attachment 331079
patch

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

r=me.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:257
&gt; +    template &lt;typename Generator, typename = typename std::enable_if&lt;std::is_same&lt;Generator, JITAddGenerator&gt;::value&gt;::type&gt;

Ugg... we should really make a macro for this...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388334</commentid>
    <comment_count>6</comment_count>
      <attachid>331079</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 11:27:59 -0800</bug_when>
    <thetext>Comment on attachment 331079
patch

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

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:257
&gt;&gt; +    template &lt;typename Generator, typename = typename std::enable_if&lt;std::is_same&lt;Generator, JITAddGenerator&gt;::value&gt;::type&gt;
&gt; 
&gt; Ugg... we should really make a macro for this...

I still want my constexpr if! I can&apos;t wait

&gt;&gt; Source/JavaScriptCore/bytecode/CodeBlock.h:267
&gt;&gt; +    JITNegIC* addMathIC(ArithProfile* profile) { return addJITNegIC(profile); }
&gt; 
&gt; The declarations were alphabetical.  Now the declarations and template declarations have different orders and don&apos;t appear to follow any order.

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388363</commentid>
    <comment_count>7</comment_count>
      <attachid>331087</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 11:59:47 -0800</bug_when>
    <thetext>Created attachment 331087
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388364</commentid>
    <comment_count>8</comment_count>
      <attachid>331088</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-11 12:01:39 -0800</bug_when>
    <thetext>Created attachment 331088
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388466</commentid>
    <comment_count>9</comment_count>
      <attachid>331088</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 14:18:22 -0800</bug_when>
    <thetext>Comment on attachment 331088
patch for landing

Clearing flags on attachment: 331088

Committed r226806: &lt;https://trac.webkit.org/changeset/226806&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388467</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 14:18:24 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331043</attachid>
            <date>2018-01-11 01:54:34 -0800</date>
            <delta_ts>2018-01-11 11:15:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10732</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjY3NjkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEpJVE1hdGhJQyBjb2RlIGluIHRoZSBGVEwgaXMgd3Jvbmcgd2hlbiBj
b2RlIGdldHMgZHVwbGljYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxNTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjM1MTk5Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9h
bGxvdy1tYXRoLWljLWIzLWNvZGUtZHVwbGljYXRpb24uanM6IEFkZGVkLgorICAgICAgICAodGVz
dDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorICAgICAgICAodGVzdDQp
OgorCiAyMDE4LTAxLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIE91ciBmb3ItaW4gY2FjaGluZyBpcyB3cm9uZyB3aGVuIHdlIGFkZCBpbmRleGVkIHByb3Bl
cnRpZXMgb24gdGhpbmdzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL2FsbG93LW1hdGgtaWMtYjMtY29kZS1kdXBsaWNhdGlvbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9hbGxvdy1tYXRoLWljLWIzLWNvZGUtZHVwbGljYXRpb24uanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvYWxsb3ctbWF0aC1pYy1iMy1jb2RlLWR1cGxpY2F0
aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKK2Z1bmN0aW9uIHRlc3QxKCkg
eworICAgIHZhciBvMTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgewor
ICAgICAgICB2YXIgbzIgPSB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjog
eyBmOiB7IGY6IHsgZjogeyBmOiB7IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH07CisgICAgfQor
ICAgIHJldHVybiAtbzI7Cit9Cit0ZXN0MSgpOworCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICB2
YXIgbzE7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAg
dmFyIG8yID0geyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBm
OiB7IGY6IHsgZjogeyB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9OworICAgIH0KKyAgICByZXR1
cm4gbzEgLSBvMjsKK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIHZhciBv
MTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICB2YXIg
bzIgPSB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsg
ZjogeyBmOiB7IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH07CisgICAgfQorICAgIHJldHVybiBv
MSArIG8yOworfQordGVzdDMoKTsKKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgdmFyIG8xOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBvMiA9
IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7
IGY6IHsgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfTsKKyAgICB9CisgICAgcmV0dXJuIG8xICog
bzI7Cit9Cit0ZXN0NCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjY3NjkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMDEtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgSklUTWF0aElDIGNvZGUgaW4gdGhlIEZUTCBpcyB3cm9uZyB3aGVu
IGNvZGUgZ2V0cyBkdXBsaWNhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE1MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MzUxOTkzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEIzL0FpciBt
YXkgZHVwbGljYXRlIGNvZGUgZm9yIHZhcmlvdXMgcmVhc29ucy4gUGF0Y2hwb2ludCBnZW5lcmF0
b3JzIGluc2lkZQorICAgICAgICBGVExMb3dlciBtdXN0IGJlIGF3YXJlIHRoYXQgdGhleSBjYW4g
YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGJlY2F1c2Ugb2YgdGhpcy4KKyAgICAgICAgVGhlIHBh
dGNocG9pbnQgZm9yIG1hdGggSUNzIHdhcyBub3QgYXdhcmUgb2YgdGhpcywgYW5kIHNoYXJlZCBz
dGF0ZSBhbW9uZ3N0CisgICAgICAgIGFsbCBpbnZvY2F0aW9ucyBvZiB0aGUgcGF0Y2hwb2ludCdz
IGdlbmVyYXRvci4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ1ZyBzbworICAgICAgICB0aGF0IGVh
Y2ggaW52b2NhdGlvbiBvZiB0aGUgcGF0Y2hwb2ludCdzIGdlbmVyYXRvciBnZXRzIGEgdW5pcXVl
IG1hdGggSUMuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphZGRNYXRoSUMpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVB
ZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQmlu
YXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQXJpdGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTWF0aElDKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUTWF0aElDLmg6Cisg
ICAgICAgIChKU0M6OmlzUHJvZmlsZUVtcHR5KToKKwogMjAxOC0wMS0xMSAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBPdXIgZm9yLWluIGNhY2hpbmcgaXMgd3Jv
bmcgd2hlbiB3ZSBhZGQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIHRoaW5ncyBpbiB0aGUgcHJvdG90
eXBlIGNoYWluCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCShyZXZpc2lvbiAyMjY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MCwxMSArMjUwLDI0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7CiAgICAgCiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNz
VHlwZSk7CiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSopOwogICAgIEpJ
VE11bElDKiBhZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqKTsKLSAgICBKSVROZWdJQyogYWRkSklU
TmVnSUMoQXJpdGhQcm9maWxlKik7CiAgICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEFyaXRoUHJv
ZmlsZSopOworICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2ZpbGUqKTsKKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUQWRkR2VuZXJhdG9yPjo6dmFsdWU+
Ojp0eXBlPgorICAgIEpJVEFkZElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVRBZGRJQyhwcm9maWxlKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1l
IEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8R2VuZXJhdG9yLCBKSVRTdWJHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklUU3Vi
SUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklD
KHByb2ZpbGUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFt
ZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE11
bEdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KKyAgICBKSVRNdWxJQyogYWRkTWF0aElDKEFyaXRo
UHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KKworICAg
IHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjpl
bmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTmVnR2VuZXJhdG9yPjo6dmFsdWU+
Ojp0eXBlPgorICAgIEpJVE5lZ0lDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7
IHJldHVybiBhZGRKSVROZWdJQyhwcm9maWxlKTsgfQorCisgICAgU3RydWN0dXJlU3R1YkluZm8q
IGFkZFN0dWJJbmZvKEFjY2Vzc1R5cGUpOwogICAgIEJhZzxTdHJ1Y3R1cmVTdHViSW5mbz46Oml0
ZXJhdG9yIHN0dWJJbmZvQmVnaW4oKSB7IHJldHVybiBtX3N0dWJJbmZvcy5iZWdpbigpOyB9CiAg
ICAgQmFnPFN0cnVjdHVyZVN0dWJJbmZvPjo6aXRlcmF0b3Igc3R1YkluZm9FbmQoKSB7IHJldHVy
biBtX3N0dWJJbmZvcy5lbmQoKTsgfQogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAkocmV2aXNpb24gMjI2NDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTc3MiwxNCArMTc3MiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZVZhbHVlQWRk
KCkKICAgICB7CiAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9mdGxTdGF0
ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVj
b2RlSW5kZXgpOwotICAgICAgICBKSVRBZGRJQyogYWRkSUMgPSBjb2RlQmxvY2soKS0+YWRkSklU
QWRkSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBv
cGVyYXRpb25WYWx1ZUFkZE9wdGltaXplOwogICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5j
dGlvbiA9IG9wZXJhdGlvblZhbHVlQWRkOwotICAgICAgICBjb21waWxlTWF0aElDKGFkZElDLCBy
ZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgICAgIGNvbXBp
bGVCaW5hcnlNYXRoSUM8SklUQWRkR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdG
dW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8
dHlwZW5hbWUgR2VuZXJhdG9yPgotICAgIHZvaWQgY29tcGlsZU1hdGhJQyhKSVRVbmFyeU1hdGhJ
QzxHZW5lcmF0b3I+KiBtYXRoSUMsIEZ1bmN0aW9uUHRyIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVu
Y3Rpb25QdHIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZVVuYXJ5TWF0
aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jdGlvblB0ciByZXBhdGNoaW5nRnVu
Y3Rpb24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKICAgICB7CiAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX25vZGU7CiAKQEAgLTE3OTcsNiArMTc5Niw4IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVyYXRp
b25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAorICAgICAgICAgICAgICAgIEpJVFVuYXJ5
TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQyA9IGppdC5jb2RlQmxvY2soKS0+YWRkTWF0aElDPEdl
bmVyYXRvcj4oYXJpdGhQcm9maWxlKTsKKwogICAgICAgICAgICAgICAgIEJveDxDQ2FsbEhlbHBl
cnM6Okp1bXBMaXN0PiBleGNlcHRpb25zID0KICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9u
SGFuZGxlLT5zY2hlZHVsZUV4aXRDcmVhdGlvbihwYXJhbXMpLT5qdW1wcyhqaXQpOwogCkBAIC0x
ODYzLDcgKzE4NjQsNyBAQCBwcml2YXRlOgogICAgIH0KIAogICAgIHRlbXBsYXRlIDx0eXBlbmFt
ZSBHZW5lcmF0b3I+Ci0gICAgdm9pZCBjb21waWxlTWF0aElDKEpJVEJpbmFyeU1hdGhJQzxHZW5l
cmF0b3I+KiBtYXRoSUMsIEZ1bmN0aW9uUHRyIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuY3Rpb25Q
dHIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQorICAgIHZvaWQgY29tcGlsZUJpbmFyeU1hdGhJQyhB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuY3Rpb25QdHIgcmVwYXRjaGluZ0Z1bmN0aW9u
LCBGdW5jdGlvblB0ciBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2Rl
KiBub2RlID0gbV9ub2RlOwogICAgICAgICAKQEAgLTE4ODgsNiArMTg4OSw4IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBbPV0gKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBTdGFja21hcEdlbmVy
YXRpb25QYXJhbXMmIHBhcmFtcykgewogICAgICAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNo
UmVnaXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKIAorICAgICAgICAgICAgICAgIEpJVEJp
bmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMgPSBqaXQuY29kZUJsb2NrKCktPmFkZE1hdGhJ
QzxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSk7CisKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2Vw
dGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIApA
QCAtMjAyNywxMCArMjAzMCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGlu
ZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwotICAg
ICAgICAgICAgSklUU3ViSUMqIHN1YklDID0gY29kZUJsb2NrKCktPmFkZEpJVFN1YklDKGFyaXRo
UHJvZmlsZSk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlv
blZhbHVlU3ViT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlv
biA9IG9wZXJhdGlvblZhbHVlU3ViOwotICAgICAgICAgICAgY29tcGlsZU1hdGhJQyhzdWJJQywg
cmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOworICAgICAgICAgICAg
Y29tcGlsZUJpbmFyeU1hdGhJQzxKSVRTdWJHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSwgcmVwYXRj
aGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KIApAQCAtMjEyMiwxMCArMjEyNCw5IEBAIHByaXZhdGU6CiAKICAgICAgICAg
Y2FzZSBVbnR5cGVkVXNlOiB7CiAgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgIEpJVE11bElDKiBtdWxJQyA9IGNv
ZGVCbG9jaygpLT5hZGRKSVRNdWxJQyhhcml0aFByb2ZpbGUpOwogICAgICAgICAgICAgYXV0byBy
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bE9wdGltaXplOwogICAgICAgICAg
ICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZU11bDsKLSAgICAg
ICAgICAgIGNvbXBpbGVNYXRoSUMobXVsSUMsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRj
aGluZ0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUTXVsR2Vu
ZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1
bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTI3MDQsMTAgKzI3
MDUsOSBAQCBwcml2YXRlOgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgREZHX0FTU0VS
VChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFVudHlwZWRV
c2UpOwogICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2Z0bFN0YXRl
LmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJp
dGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNv
ZGVJbmRleCk7Ci0gICAgICAgICAgICBKSVROZWdJQyogbmVnSUMgPSBjb2RlQmxvY2soKS0+YWRk
SklUTmVnSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0
aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGVPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9u
UmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uQXJpdGhOZWdhdGU7Ci0gICAgICAgICAgICBj
b21waWxlTWF0aElDKG5lZ0lDLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5j
dGlvbik7CisgICAgICAgICAgICBjb21waWxlVW5hcnlNYXRoSUM8SklUTmVnR2VuZXJhdG9yPihh
cml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE1hdGhJQy5oCShyZXZpc2lvbiAyMjY0MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE1hdGhJQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU0LDYgKzU0LDcgQEAgc3Ry
dWN0IE1hdGhJQ0dlbmVyYXRpb25TdGF0ZSB7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0
b3JUeXBlLCBib29sKCppc1Byb2ZpbGVFbXB0eSkoQXJpdGhQcm9maWxlJik+CiBjbGFzcyBKSVRN
YXRoSUMgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIEpJVE1h
dGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSkKICAgICAgICAgOiBtX2FyaXRoUHJvZmls
ZShhcml0aFByb2ZpbGUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331079</attachid>
            <date>2018-01-11 11:15:30 -0800</date>
            <delta_ts>2018-01-11 11:59:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10370</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjY3ODgpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEpJVE1hdGhJQyBjb2RlIGluIHRoZSBGVEwgaXMgd3Jvbmcgd2hlbiBj
b2RlIGdldHMgZHVwbGljYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxNTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjM1MTk5Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9h
bGxvdy1tYXRoLWljLWIzLWNvZGUtZHVwbGljYXRpb24uanM6IEFkZGVkLgorICAgICAgICAodGVz
dDEpOgorICAgICAgICAodGVzdDIpOgorICAgICAgICAodGVzdDMpOgorICAgICAgICAodGVzdDQp
OgorCiAyMDE4LTAxLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAg
ICAgIE91ciBmb3ItaW4gY2FjaGluZyBpcyB3cm9uZyB3aGVuIHdlIGFkZCBpbmRleGVkIHByb3Bl
cnRpZXMgb24gdGhpbmdzIGluIHRoZSBwcm90b3R5cGUgY2hhaW4KSW5kZXg6IEpTVGVzdHMvc3Ry
ZXNzL2FsbG93LW1hdGgtaWMtYjMtY29kZS1kdXBsaWNhdGlvbi5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
U1Rlc3RzL3N0cmVzcy9hbGxvdy1tYXRoLWljLWIzLWNvZGUtZHVwbGljYXRpb24uanMJKG5vbmV4
aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3MvYWxsb3ctbWF0aC1pYy1iMy1jb2RlLWR1cGxpY2F0
aW9uLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzUgQEAKK2Z1bmN0aW9uIHRlc3QxKCkg
eworICAgIHZhciBvMTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgewor
ICAgICAgICB2YXIgbzIgPSB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjog
eyBmOiB7IGY6IHsgZjogeyBmOiB7IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH07CisgICAgfQor
ICAgIHJldHVybiAtbzI7Cit9Cit0ZXN0MSgpOworCitmdW5jdGlvbiB0ZXN0MigpIHsKKyAgICB2
YXIgbzE7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAg
dmFyIG8yID0geyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBm
OiB7IGY6IHsgZjogeyB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9OworICAgIH0KKyAgICByZXR1
cm4gbzEgLSBvMjsKK30KK3Rlc3QyKCk7CisKK2Z1bmN0aW9uIHRlc3QzKCkgeworICAgIHZhciBv
MTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAgICB2YXIg
bzIgPSB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsg
ZjogeyBmOiB7IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH07CisgICAgfQorICAgIHJldHVybiBv
MSArIG8yOworfQordGVzdDMoKTsKKworZnVuY3Rpb24gdGVzdDQoKSB7CisgICAgdmFyIG8xOwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHZhciBvMiA9
IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7
IGY6IHsgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfTsKKyAgICB9CisgICAgcmV0dXJuIG8xICog
bzI7Cit9Cit0ZXN0NCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjY3ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMDEtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBs
ZS5jb20+CisKKyAgICAgICAgSklUTWF0aElDIGNvZGUgaW4gdGhlIEZUTCBpcyB3cm9uZyB3aGVu
IGNvZGUgZ2V0cyBkdXBsaWNhdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xODE1MjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MzUxOTkzPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEIzL0FpciBt
YXkgZHVwbGljYXRlIGNvZGUgZm9yIHZhcmlvdXMgcmVhc29ucy4gUGF0Y2hwb2ludCBnZW5lcmF0
b3JzIGluc2lkZQorICAgICAgICBGVExMb3dlciBtdXN0IGJlIGF3YXJlIHRoYXQgdGhleSBjYW4g
YmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGJlY2F1c2Ugb2YgdGhpcy4KKyAgICAgICAgVGhlIHBh
dGNocG9pbnQgZm9yIG1hdGggSUNzIHdhcyBub3QgYXdhcmUgb2YgdGhpcywgYW5kIHNoYXJlZCBz
dGF0ZSBhbW9uZ3N0CisgICAgICAgIGFsbCBpbnZvY2F0aW9ucyBvZiB0aGUgcGF0Y2hwb2ludCdz
IGdlbmVyYXRvci4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ1ZyBzbworICAgICAgICB0aGF0IGVh
Y2ggaW52b2NhdGlvbiBvZiB0aGUgcGF0Y2hwb2ludCdzIGdlbmVyYXRvciBnZXRzIGEgdW5pcXVl
IG1hdGggSUMuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjphZGRNYXRoSUMpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMu
Y3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVmFsdWVB
ZGQpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlVW5hcnlN
YXRoSUMpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlQmlu
YXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGls
ZUFyaXRoQWRkT3JTdWIpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQXJpdGhNdWwpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpj
b21waWxlQXJpdGhOZWdhdGUpOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlTWF0aElDKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUTWF0aElDLmg6Cisg
ICAgICAgIChKU0M6OmlzUHJvZmlsZUVtcHR5KToKKwogMjAxOC0wMS0xMSAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFbnN1cmUgdGhlcmUgYXJlIG5vIHVu
c2FmZSB1c2VzIG9mIE1hY3JvQXNzZW1ibGVyQVJNNjQ6OmRhdGFUZW1wUmVnaXN0ZXIKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDIy
Njc4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMjQ5LDExICsyNDksMjQgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0QnlW
YWxJbmZvTWFwKEJ5VmFsSW5mb01hcCYgcmVzdWx0KTsKICAgICAKICNpZiBFTkFCTEUoSklUKQot
ICAgIFN0cnVjdHVyZVN0dWJJbmZvKiBhZGRTdHViSW5mbyhBY2Nlc3NUeXBlKTsKICAgICBKSVRB
ZGRJQyogYWRkSklUQWRkSUMoQXJpdGhQcm9maWxlKik7CiAgICAgSklUTXVsSUMqIGFkZEpJVE11
bElDKEFyaXRoUHJvZmlsZSopOwotICAgIEpJVE5lZ0lDKiBhZGRKSVROZWdJQyhBcml0aFByb2Zp
bGUqKTsKICAgICBKSVRTdWJJQyogYWRkSklUU3ViSUMoQXJpdGhQcm9maWxlKik7CisgICAgSklU
TmVnSUMqIGFkZEpJVE5lZ0lDKEFyaXRoUHJvZmlsZSopOworCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8R2VuZXJhdG9yLCBKSVRBZGRHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklU
QWRkSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVEFk
ZElDKHByb2ZpbGUpOyB9CisKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBl
bmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJ
VFN1YkdlbmVyYXRvcj46OnZhbHVlPjo6dHlwZT4KKyAgICBKSVRTdWJJQyogYWRkTWF0aElDKEFy
aXRoUHJvZmlsZSogcHJvZmlsZSkgeyByZXR1cm4gYWRkSklUU3ViSUMocHJvZmlsZSk7IH0KKwor
ICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBHZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3Rk
OjplbmFibGVfaWY8c3RkOjppc19zYW1lPEdlbmVyYXRvciwgSklUTXVsR2VuZXJhdG9yPjo6dmFs
dWU+Ojp0eXBlPgorICAgIEpJVE11bElDKiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxl
KSB7IHJldHVybiBhZGRKSVRNdWxJQyhwcm9maWxlKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVu
YW1lIEdlbmVyYXRvciwgdHlwZW5hbWUgPSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6Omlz
X3NhbWU8R2VuZXJhdG9yLCBKSVROZWdHZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklU
TmVnSUMqIGFkZE1hdGhJQyhBcml0aFByb2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVE5l
Z0lDKHByb2ZpbGUpOyB9CisKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNj
ZXNzVHlwZSk7CiAgICAgYXV0byBzdHViSW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3Mu
YmVnaW4oKTsgfQogICAgIGF1dG8gc3R1YkluZm9FbmQoKSB7IHJldHVybiBtX3N0dWJJbmZvcy5l
bmQoKTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9C
My5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvQjMuY3BwCShyZXZpc2lvbiAyMjY3ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NzYsMTQgKzE3NzYsMTMg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVWYWx1ZUFkZCgpCiAgICAgewogICAgICAgICBB
cml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2Rl
QmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAgICAgICAg
SklUQWRkSUMqIGFkZElDID0gY29kZUJsb2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7
CiAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRp
bWl6ZTsKICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1
ZUFkZDsKLSAgICAgICAgY29tcGlsZU1hdGhJQyhhZGRJQywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBu
b25SZXBhdGNoaW5nRnVuY3Rpb24pOworICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVEFk
ZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbik7CiAgICAgfQogCiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcj4K
LSAgICB2b2lkIGNvbXBpbGVNYXRoSUMoSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElD
LCBGdW5jdGlvblB0ciByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSwgRnVuY3Rpb25QdHIgcmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jdGlvblB0ciBu
b25SZXBhdGNoaW5nRnVuY3Rpb24pCiAgICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2Rl
OwogCkBAIC0xODAxLDYgKzE4MDAsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChDQ2Fs
bEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsK
ICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3Jh
dGNoKGppdCk7CiAKKyAgICAgICAgICAgICAgICBKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBt
YXRoSUMgPSBqaXQuY29kZUJsb2NrKCktPmFkZE1hdGhJQzxHZW5lcmF0b3I+KGFyaXRoUHJvZmls
ZSk7CisKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0
aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0
Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIApAQCAtMTg2Nyw3ICsxODY4LDcgQEAgcHJp
dmF0ZToKICAgICB9CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yPgotICAgIHZv
aWQgY29tcGlsZU1hdGhJQyhKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBGdW5j
dGlvblB0ciByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hpbmdGdW5j
dGlvbikKKyAgICB2b2lkIGNvbXBpbGVCaW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFBy
b2ZpbGUsIEZ1bmN0aW9uUHRyIHJlcGF0Y2hpbmdGdW5jdGlvbiwgRnVuY3Rpb25QdHIgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKQogICAgIHsKICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAg
ICAgICAgCkBAIC0xODkyLDYgKzE4OTMsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChD
Q2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMp
IHsKICAgICAgICAgICAgICAgICBBbGxvd01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dT
Y3JhdGNoKGppdCk7CiAKKyAgICAgICAgICAgICAgICBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9y
PiogbWF0aElDID0gaml0LmNvZGVCbG9jaygpLT5hZGRNYXRoSUM8R2VuZXJhdG9yPihhcml0aFBy
b2ZpbGUpOworCiAgICAgICAgICAgICAgICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4
Y2VwdGlvbnMgPQogICAgICAgICAgICAgICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxl
RXhpdENyZWF0aW9uKHBhcmFtcyktPmp1bXBzKGppdCk7CiAKQEAgLTIwMzEsMTAgKzIwMzQsOSBA
QCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFy
aXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2Rl
LT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUt
Pm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgIEpJVFN1YklDKiBz
dWJJQyA9IGNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgICAgICAg
ICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwog
ICAgICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1
YjsKLSAgICAgICAgICAgIGNvbXBpbGVNYXRoSUMoc3ViSUMsIHJlcGF0Y2hpbmdGdW5jdGlvbiwg
bm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8
SklUU3ViR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVw
YXRjaGluZ0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIx
MjYsMTAgKzIxMjgsOSBAQCBwcml2YXRlOgogCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewog
ICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUgPSBtX2Z0bFN0YXRlLmdyYXBo
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRl
eCk7Ci0gICAgICAgICAgICBKSVRNdWxJQyogbXVsSUMgPSBjb2RlQmxvY2soKS0+YWRkSklUTXVs
SUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0g
b3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7Ci0gICAgICAgICAgICBjb21waWxlTWF0aElD
KG11bElDLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAg
ICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9maWxl
LCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNzA4LDEwICsyNzA5LDkgQEAgcHJpdmF0ZToKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIEFy
aXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICAg
ICAgSklUTmVnSUMqIG5lZ0lDID0gY29kZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmls
ZSk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRo
TmVnYXRlT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9
IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwotICAgICAgICAgICAgY29tcGlsZU1hdGhJQyhuZWdJQywg
cmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOworICAgICAgICAgICAg
Y29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNo
aW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0
aElDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMu
aAkocmV2aXNpb24gMjI2Nzg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRo
SUMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHN0cnVjdCBNYXRoSUNHZW5lcmF0aW9u
U3RhdGUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9m
aWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgogY2xhc3MgSklUTWF0aElDIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlKiBh
cml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQo=
</data>
<flag name="review"
          id="350072"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331087</attachid>
            <date>2018-01-11 11:59:47 -0800</date>
            <delta_ts>2018-01-11 12:01:39 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10289</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjY3ODkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAxLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEpJVE1hdGhJQyBjb2RlIGluIHRoZSBGVEwgaXMgd3Jvbmcgd2hlbiBj
b2RlIGdldHMgZHVwbGljYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxNTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjM1MTk5Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZiBhbmQgS2VpdGggTWlsbGVyLgorCisg
ICAgICAgICogc3RyZXNzL2FsbG93LW1hdGgtaWMtYjMtY29kZS1kdXBsaWNhdGlvbi5qczogQWRk
ZWQuCisKIDIwMTgtMDEtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgT3VyIGZvci1pbiBjYWNoaW5nIGlzIHdyb25nIHdoZW4gd2UgYWRkIGluZGV4ZWQgcHJv
cGVydGllcyBvbiB0aGluZ3MgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgpJbmRleDogSlNUZXN0cy9z
dHJlc3MvYWxsb3ctbWF0aC1pYy1iMy1jb2RlLWR1cGxpY2F0aW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL2FsbG93LW1hdGgtaWMtYjMtY29kZS1kdXBsaWNhdGlvbi5qcwkobm9u
ZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9hbGxvdy1tYXRoLWljLWIzLWNvZGUtZHVwbGlj
YXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rpb24gdGVzdDEo
KSB7CisgICAgdmFyIG8xOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBvMiA9IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBm
OiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfTsKKyAgICB9
CisgICAgcmV0dXJuIC1vMjsKK30KK3Rlc3QxKCk7CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAg
IHZhciBvMTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAg
ICB2YXIgbzIgPSB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7
IGY6IHsgZjogeyBmOiB7IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH07CisgICAgfQorICAgIHJl
dHVybiBvMSAtIG8yOworfQordGVzdDIoKTsKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgdmFy
IG8xOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHZh
ciBvMiA9IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjog
eyBmOiB7IGY6IHsgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfTsKKyAgICB9CisgICAgcmV0dXJu
IG8xICsgbzI7Cit9Cit0ZXN0MygpOworCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICB2YXIgbzE7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIG8y
ID0geyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6
IHsgZjogeyB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9OworICAgIH0KKyAgICByZXR1cm4gbzEg
KiBvMjsKK30KK3Rlc3Q0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyNjc4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMCBAQAorMjAxOC0wMS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KKworICAgICAgICBKSVRNYXRoSUMgY29kZSBpbiB0aGUgRlRMIGlzIHdyb25nIHdo
ZW4gY29kZSBnZXRzIGR1cGxpY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTUyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzNTE5OTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYgYW5kIEtlaXRoIE1pbGxlci4K
KworICAgICAgICBCMy9BaXIgbWF5IGR1cGxpY2F0ZSBjb2RlIGZvciB2YXJpb3VzIHJlYXNvbnMu
IFBhdGNocG9pbnQgZ2VuZXJhdG9ycyBpbnNpZGUKKyAgICAgICAgRlRMTG93ZXIgbXVzdCBiZSBh
d2FyZSB0aGF0IHRoZXkgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBiZWNhdXNlIG9mIHRo
aXMuCisgICAgICAgIFRoZSBwYXRjaHBvaW50IGZvciBtYXRoIElDcyB3YXMgbm90IGF3YXJlIG9m
IHRoaXMsIGFuZCBzaGFyZWQgc3RhdGUgYW1vbmdzdAorICAgICAgICBhbGwgaW52b2NhdGlvbnMg
b2YgdGhlIHBhdGNocG9pbnQncyBnZW5lcmF0b3IuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBidWcg
c28KKyAgICAgICAgdGhhdCBlYWNoIGludm9jYXRpb24gb2YgdGhlIHBhdGNocG9pbnQncyBnZW5l
cmF0b3IgZ2V0cyBhIHVuaXF1ZSBtYXRoIElDLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElDKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGhJQyk6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjppc1Byb2ZpbGVFbXB0eSk6CisKIDIwMTgt
MDEtMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5z
dXJlIHRoZXJlIGFyZSBubyB1bnNhZmUgdXNlcyBvZiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpkYXRh
VGVtcFJlZ2lzdGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCShyZXZpc2lvbiAyMjY3ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OSwxMSArMjQ5LDI0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7CiAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNj
ZXNzVHlwZSk7CiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSopOwogICAg
IEpJVE11bElDKiBhZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqKTsKICAgICBKSVROZWdJQyogYWRk
SklUTmVnSUMoQXJpdGhQcm9maWxlKik7CiAgICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEFyaXRo
UHJvZmlsZSopOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRBZGRH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklUQWRkSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE11bEdlbmVyYXRvcj46OnZhbHVlPjo6
dHlwZT4KKyAgICBKSVRNdWxJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyBy
ZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PEdlbmVyYXRvciwgSklUTmVnR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgorICAgIEpJVE5lZ0lD
KiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhw
cm9maWxlKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CisKKyAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAgICAgYXV0byBzdHVi
SW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsgfQogICAgIGF1dG8gc3R1
YkluZm9FbmQoKSB7IHJldHVybiBtX3N0dWJJbmZvcy5lbmQoKTsgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjY3
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NzYsMTQgKzE3NzYsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVWYWx1ZUFkZCgpCiAgICAgewogICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklUQWRkSUMqIGFkZElDID0gY29kZUJs
b2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25S
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZDsKLSAgICAgICAgY29tcGlsZU1h
dGhJQyhhZGRJQywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwor
ICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxl
LCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcj4KLSAgICB2b2lkIGNvbXBpbGVNYXRoSUMo
SklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBGdW5jdGlvblB0ciByZXBhdGNoaW5n
RnVuY3Rpb24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNv
bXBpbGVVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuY3Rpb25QdHIg
cmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jdGlvblB0ciBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAg
ICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogCkBAIC0xODAxLDYgKzE4MDAsOCBA
QCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3QgU3Rh
Y2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxvd01h
Y3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKKyAgICAgICAgICAg
ICAgICBKSVRVbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMgPSBqaXQuY29kZUJsb2NrKCkt
PmFkZE1hdGhJQzxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSk7CisKICAgICAgICAgICAgICAgICBC
b3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9ucyA9CiAgICAgICAgICAgICAgICAg
ICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3JlYXRpb24ocGFyYW1zKS0+anVtcHMo
aml0KTsKIApAQCAtMTg2Nyw3ICsxODY4LDcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yPgotICAgIHZvaWQgY29tcGlsZU1hdGhJQyhKSVRCaW5h
cnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBGdW5jdGlvblB0ciByZXBhdGNoaW5nRnVuY3Rp
b24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNvbXBpbGVC
aW5hcnlNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUsIEZ1bmN0aW9uUHRyIHJlcGF0
Y2hpbmdGdW5jdGlvbiwgRnVuY3Rpb25QdHIgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKQogICAgIHsK
ICAgICAgICAgTm9kZSogbm9kZSA9IG1fbm9kZTsKICAgICAgICAgCkBAIC0xODkyLDYgKzE4OTMs
OCBAQCBwcml2YXRlOgogICAgICAgICAgICAgWz1dIChDQ2FsbEhlbHBlcnMmIGppdCwgY29uc3Qg
U3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJiBwYXJhbXMpIHsKICAgICAgICAgICAgICAgICBBbGxv
d01hY3JvU2NyYXRjaFJlZ2lzdGVyVXNhZ2UgYWxsb3dTY3JhdGNoKGppdCk7CiAKKyAgICAgICAg
ICAgICAgICBKSVRCaW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDID0gaml0LmNvZGVCbG9j
aygpLT5hZGRNYXRoSUM8R2VuZXJhdG9yPihhcml0aFByb2ZpbGUpOworCiAgICAgICAgICAgICAg
ICAgQm94PENDYWxsSGVscGVyczo6SnVtcExpc3Q+IGV4Y2VwdGlvbnMgPQogICAgICAgICAgICAg
ICAgICAgICBleGNlcHRpb25IYW5kbGUtPnNjaGVkdWxlRXhpdENyZWF0aW9uKHBhcmFtcyktPmp1
bXBzKGppdCk7CiAKQEAgLTIwMzEsMTAgKzIwMzQsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
fQogCiAgICAgICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUu
Z3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0
aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29k
ZUluZGV4KTsKLSAgICAgICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IGNvZGVCbG9jaygpLT5hZGRK
SVRTdWJJQyhhcml0aFByb2ZpbGUpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25SZXBh
dGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKLSAgICAgICAgICAgIGNvbXBpbGVN
YXRoSUMoc3ViSUMsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsK
KyAgICAgICAgICAgIGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFBy
b2ZpbGUsIHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTIxMjYsMTAgKzIxMjgsOSBAQCBwcml2YXRl
OgogCiAgICAgICAgIGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgQXJpdGhQcm9maWxl
KiBhcml0aFByb2ZpbGUgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9u
b2RlLT5vcmlnaW4uc2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgICAgICBKSVRNdWxJ
QyogbXVsSUMgPSBjb2RlQmxvY2soKS0+YWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKICAgICAg
ICAgICAgIGF1dG8gcmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6
ZTsKICAgICAgICAgICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFs
dWVNdWw7Ci0gICAgICAgICAgICBjb21waWxlTWF0aElDKG11bElDLCByZXBhdGNoaW5nRnVuY3Rp
b24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CisgICAgICAgICAgICBjb21waWxlQmluYXJ5TWF0
aElDPEpJVE11bEdlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBA
IC0yNzA4LDEwICsyNzA5LDkgQEAgcHJpdmF0ZToKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAg
ICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQo
KSA9PSBVbnR5cGVkVXNlKTsKICAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxl
ID0gbV9mdGxTdGF0ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYyktPmFyaXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNl
bWFudGljLmJ5dGVjb2RlSW5kZXgpOwotICAgICAgICAgICAgSklUTmVnSUMqIG5lZ0lDID0gY29k
ZUJsb2NrKCktPmFkZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgICAgICBhdXRvIHJl
cGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemU7CiAgICAgICAg
ICAgICBhdXRvIG5vblJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwot
ICAgICAgICAgICAgY29tcGlsZU1hdGhJQyhuZWdJQywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25S
ZXBhdGNoaW5nRnVuY3Rpb24pOworICAgICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5l
Z0dlbmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hp
bmdGdW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkocmV2aXNpb24gMjI2Nzg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2
ICs1NCw3IEBAIHN0cnVjdCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUgewogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgR2VuZXJhdG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYp
PgogY2xhc3MgSklUTWF0aElDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKICAgICBKSVRNYXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDog
bV9hcml0aFByb2ZpbGUoYXJpdGhQcm9maWxlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331088</attachid>
            <date>2018-01-11 12:01:39 -0800</date>
            <delta_ts>2018-01-11 14:18:22 -0800</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10733</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjY3ODkpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE4LTAxLTExICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIEpJVE1hdGhJQyBjb2RlIGluIHRoZSBGVEwgaXMgd3Jvbmcgd2hlbiBj
b2RlIGdldHMgZHVwbGljYXRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTgxNTI1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjM1MTk5Mz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBNaWNoYWVsIFNhYm9mZiBhbmQgS2VpdGggTWlsbGVyLgorCisg
ICAgICAgICogc3RyZXNzL2FsbG93LW1hdGgtaWMtYjMtY29kZS1kdXBsaWNhdGlvbi5qczogQWRk
ZWQuCisKIDIwMTgtMDEtMTEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAg
ICAgICAgT3VyIGZvci1pbiBjYWNoaW5nIGlzIHdyb25nIHdoZW4gd2UgYWRkIGluZGV4ZWQgcHJv
cGVydGllcyBvbiB0aGluZ3MgaW4gdGhlIHByb3RvdHlwZSBjaGFpbgpJbmRleDogSlNUZXN0cy9z
dHJlc3MvYWxsb3ctbWF0aC1pYy1iMy1jb2RlLWR1cGxpY2F0aW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEpTVGVzdHMvc3RyZXNzL2FsbG93LW1hdGgtaWMtYjMtY29kZS1kdXBsaWNhdGlvbi5qcwkobm9u
ZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9hbGxvdy1tYXRoLWljLWIzLWNvZGUtZHVwbGlj
YXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNSBAQAorZnVuY3Rpb24gdGVzdDEo
KSB7CisgICAgdmFyIG8xOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7
CisgICAgICAgIHZhciBvMiA9IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBm
OiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfTsKKyAgICB9
CisgICAgcmV0dXJuIC1vMjsKK30KK3Rlc3QxKCk7CisKK2Z1bmN0aW9uIHRlc3QyKCkgeworICAg
IHZhciBvMTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDEwMDAwMDA7ICsraSkgeworICAgICAg
ICB2YXIgbzIgPSB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7
IGY6IHsgZjogeyBmOiB7IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH07CisgICAgfQorICAgIHJl
dHVybiBvMSAtIG8yOworfQordGVzdDIoKTsKKworZnVuY3Rpb24gdGVzdDMoKSB7CisgICAgdmFy
IG8xOworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTAwMDAwMDsgKytpKSB7CisgICAgICAgIHZh
ciBvMiA9IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjog
eyBmOiB7IGY6IHsgfSB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfTsKKyAgICB9CisgICAgcmV0dXJu
IG8xICsgbzI7Cit9Cit0ZXN0MygpOworCitmdW5jdGlvbiB0ZXN0NCgpIHsKKyAgICB2YXIgbzE7
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwMDAwOyArK2kpIHsKKyAgICAgICAgdmFyIG8y
ID0geyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6IHsgZjogeyBmOiB7IGY6
IHsgZjogeyB9IH0gfSB9IH0gfSB9IH0gfSB9IH0gfSB9OworICAgIH0KKyAgICByZXR1cm4gbzEg
KiBvMjsKK30KK3Rlc3Q0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIyNjc4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwzMCBAQAorMjAxOC0wMS0xMSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFw
cGxlLmNvbT4KKworICAgICAgICBKSVRNYXRoSUMgY29kZSBpbiB0aGUgRlRMIGlzIHdyb25nIHdo
ZW4gY29kZSBnZXRzIGR1cGxpY2F0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTUyNQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYzNTE5OTM+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWljaGFlbCBTYWJvZmYgYW5kIEtlaXRoIE1pbGxlci4K
KworICAgICAgICBCMy9BaXIgbWF5IGR1cGxpY2F0ZSBjb2RlIGZvciB2YXJpb3VzIHJlYXNvbnMu
IFBhdGNocG9pbnQgZ2VuZXJhdG9ycyBpbnNpZGUKKyAgICAgICAgRlRMTG93ZXIgbXVzdCBiZSBh
d2FyZSB0aGF0IHRoZXkgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBiZWNhdXNlIG9mIHRo
aXMuCisgICAgICAgIFRoZSBwYXRjaHBvaW50IGZvciBtYXRoIElDcyB3YXMgbm90IGF3YXJlIG9m
IHRoaXMsIGFuZCBzaGFyZWQgc3RhdGUgYW1vbmdzdAorICAgICAgICBhbGwgaW52b2NhdGlvbnMg
b2YgdGhlIHBhdGNocG9pbnQncyBnZW5lcmF0b3IuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBidWcg
c28KKyAgICAgICAgdGhhdCBlYWNoIGludm9jYXRpb24gb2YgdGhlIHBhdGNocG9pbnQncyBnZW5l
cmF0b3IgZ2V0cyBhIHVuaXF1ZSBtYXRoIElDLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTWF0aElDKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVZhbHVlQWRkKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZVVuYXJ5TWF0aElDKToKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2Vy
REZHVG9CMzo6Y29tcGlsZUJpbmFyeU1hdGhJQyk6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVBcml0aEFkZE9yU3ViKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoTXVsKToKKyAgICAgICAgKEpTQzo6RlRMOjpE
Rkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZUFyaXRoTmVnYXRlKToKKyAgICAgICAgKEpTQzo6RlRM
OjpERkc6Okxvd2VyREZHVG9CMzo6Y29tcGlsZU1hdGhJQyk6IERlbGV0ZWQuCisgICAgICAgICog
aml0L0pJVE1hdGhJQy5oOgorICAgICAgICAoSlNDOjppc1Byb2ZpbGVFbXB0eSk6CisKIDIwMTgt
MDEtMTEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgRW5z
dXJlIHRoZXJlIGFyZSBubyB1bnNhZmUgdXNlcyBvZiBNYWNyb0Fzc2VtYmxlckFSTTY0OjpkYXRh
VGVtcFJlZ2lzdGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCShyZXZpc2lvbiAyMjY3ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0OSwxMSArMjQ5LDI0IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGdldEJ5VmFsSW5mb01hcChCeVZhbEluZm9NYXAmIHJlc3VsdCk7CiAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBTdHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNj
ZXNzVHlwZSk7CiAgICAgSklUQWRkSUMqIGFkZEpJVEFkZElDKEFyaXRoUHJvZmlsZSopOwogICAg
IEpJVE11bElDKiBhZGRKSVRNdWxJQyhBcml0aFByb2ZpbGUqKTsKICAgICBKSVROZWdJQyogYWRk
SklUTmVnSUMoQXJpdGhQcm9maWxlKik7CiAgICAgSklUU3ViSUMqIGFkZEpJVFN1YklDKEFyaXRo
UHJvZmlsZSopOworCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRBZGRH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklUQWRkSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVEFkZElDKHByb2ZpbGUpOyB9CisKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJhdG9yLCB0eXBlbmFtZSA9IHR5cGVuYW1lIHN0ZDo6ZW5h
YmxlX2lmPHN0ZDo6aXNfc2FtZTxHZW5lcmF0b3IsIEpJVE11bEdlbmVyYXRvcj46OnZhbHVlPjo6
dHlwZT4KKyAgICBKSVRNdWxJQyogYWRkTWF0aElDKEFyaXRoUHJvZmlsZSogcHJvZmlsZSkgeyBy
ZXR1cm4gYWRkSklUTXVsSUMocHJvZmlsZSk7IH0KKworICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBH
ZW5lcmF0b3IsIHR5cGVuYW1lID0gdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PEdlbmVyYXRvciwgSklUTmVnR2VuZXJhdG9yPjo6dmFsdWU+Ojp0eXBlPgorICAgIEpJVE5lZ0lD
KiBhZGRNYXRoSUMoQXJpdGhQcm9maWxlKiBwcm9maWxlKSB7IHJldHVybiBhZGRKSVROZWdJQyhw
cm9maWxlKTsgfQorCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvciwgdHlwZW5hbWUg
PSB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8R2VuZXJhdG9yLCBKSVRTdWJH
ZW5lcmF0b3I+Ojp2YWx1ZT46OnR5cGU+CisgICAgSklUU3ViSUMqIGFkZE1hdGhJQyhBcml0aFBy
b2ZpbGUqIHByb2ZpbGUpIHsgcmV0dXJuIGFkZEpJVFN1YklDKHByb2ZpbGUpOyB9CisKKyAgICBT
dHJ1Y3R1cmVTdHViSW5mbyogYWRkU3R1YkluZm8oQWNjZXNzVHlwZSk7CiAgICAgYXV0byBzdHVi
SW5mb0JlZ2luKCkgeyByZXR1cm4gbV9zdHViSW5mb3MuYmVnaW4oKTsgfQogICAgIGF1dG8gc3R1
YkluZm9FbmQoKSB7IHJldHVybiBtX3N0dWJJbmZvcy5lbmQoKTsgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCShyZXZpc2lvbiAyMjY3
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3NzYsMTQgKzE3NzYsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNv
bXBpbGVWYWx1ZUFkZCgpCiAgICAgewogICAgICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmls
ZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5z
ZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAgICAgICAgSklUQWRkSUMqIGFkZElDID0gY29kZUJs
b2NrKCktPmFkZEpJVEFkZElDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgIGF1dG8gcmVwYXRjaGlu
Z0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVBZGRPcHRpbWl6ZTsKICAgICAgICAgYXV0byBub25S
ZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRpb25WYWx1ZUFkZDsKLSAgICAgICAgY29tcGlsZU1h
dGhJQyhhZGRJQywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVuY3Rpb24pOwor
ICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVEFkZEdlbmVyYXRvcj4oYXJpdGhQcm9maWxl
LCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcj4KLSAgICB2b2lkIGNvbXBpbGVNYXRoSUMo
SklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiogbWF0aElDLCBGdW5jdGlvblB0ciByZXBhdGNoaW5n
RnVuY3Rpb24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hpbmdGdW5jdGlvbikKKyAgICB2b2lkIGNv
bXBpbGVVbmFyeU1hdGhJQyhBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSwgRnVuY3Rpb25QdHIg
cmVwYXRjaGluZ0Z1bmN0aW9uLCBGdW5jdGlvblB0ciBub25SZXBhdGNoaW5nRnVuY3Rpb24pCiAg
ICAgewogICAgICAgICBOb2RlKiBub2RlID0gbV9ub2RlOwogCkBAIC0xODA5LDYgKzE4MDgsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICAgICAgICAgICAgICBCb3g8TWF0aElDR2VuZXJhdGlv
blN0YXRlPiBtYXRoSUNHZW5lcmF0aW9uU3RhdGUgPSBCb3g8TWF0aElDR2VuZXJhdGlvblN0YXRl
Pjo6Y3JlYXRlKCk7CisgICAgICAgICAgICAgICAgSklUVW5hcnlNYXRoSUM8R2VuZXJhdG9yPiog
bWF0aElDID0gaml0LmNvZGVCbG9jaygpLT5hZGRNYXRoSUM8R2VuZXJhdG9yPihhcml0aFByb2Zp
bGUpOwogICAgICAgICAgICAgICAgIG1hdGhJQy0+bV9nZW5lcmF0b3IgPSBHZW5lcmF0b3IoSlNW
YWx1ZVJlZ3MocGFyYW1zWzBdLmdwcigpKSwgSlNWYWx1ZVJlZ3MocGFyYW1zWzFdLmdwcigpKSwg
cGFyYW1zLmdwU2NyYXRjaCgwKSk7CiAKICAgICAgICAgICAgICAgICBib29sIHNob3VsZEVtaXRQ
cm9maWxpbmcgPSBmYWxzZTsKQEAgLTE4NjcsNyArMTg2Nyw3IEBAIHByaXZhdGU6CiAgICAgfQog
CiAgICAgdGVtcGxhdGUgPHR5cGVuYW1lIEdlbmVyYXRvcj4KLSAgICB2b2lkIGNvbXBpbGVNYXRo
SUMoSklUQmluYXJ5TWF0aElDPEdlbmVyYXRvcj4qIG1hdGhJQywgRnVuY3Rpb25QdHIgcmVwYXRj
aGluZ0Z1bmN0aW9uLCBGdW5jdGlvblB0ciBub25SZXBhdGNoaW5nRnVuY3Rpb24pCisgICAgdm9p
ZCBjb21waWxlQmluYXJ5TWF0aElDKEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlLCBGdW5jdGlv
blB0ciByZXBhdGNoaW5nRnVuY3Rpb24sIEZ1bmN0aW9uUHRyIG5vblJlcGF0Y2hpbmdGdW5jdGlv
bikKICAgICB7CiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7CiAgICAgICAgIApAQCAtMTg5
Miw2ICsxODkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFs9XSAoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYgcGFyYW1zKSB7CiAgICAgICAgICAg
ICAgICAgQWxsb3dNYWNyb1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOwog
CisKICAgICAgICAgICAgICAgICBCb3g8Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdD4gZXhjZXB0aW9u
cyA9CiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbkhhbmRsZS0+c2NoZWR1bGVFeGl0Q3Jl
YXRpb24ocGFyYW1zKS0+anVtcHMoaml0KTsKIApAQCAtMTkwMCw2ICsxOTAxLDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgICAgICAgICAgICAgQm94PE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT4g
bWF0aElDR2VuZXJhdGlvblN0YXRlID0gQm94PE1hdGhJQ0dlbmVyYXRpb25TdGF0ZT46OmNyZWF0
ZSgpOworICAgICAgICAgICAgICAgIEpJVEJpbmFyeU1hdGhJQzxHZW5lcmF0b3I+KiBtYXRoSUMg
PSBqaXQuY29kZUJsb2NrKCktPmFkZE1hdGhJQzxHZW5lcmF0b3I+KGFyaXRoUHJvZmlsZSk7CiAg
ICAgICAgICAgICAgICAgbWF0aElDLT5tX2dlbmVyYXRvciA9IEdlbmVyYXRvcihsZWZ0T3BlcmFu
ZCwgcmlnaHRPcGVyYW5kLCBKU1ZhbHVlUmVncyhwYXJhbXNbMF0uZ3ByKCkpLAogICAgICAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhwYXJhbXNbMV0uZ3ByKCkpLCBKU1ZhbHVlUmVncyhwYXJh
bXNbMl0uZ3ByKCkpLCBwYXJhbXMuZnBTY3JhdGNoKDApLAogICAgICAgICAgICAgICAgICAgICBw
YXJhbXMuZnBTY3JhdGNoKDEpLCBwYXJhbXMuZ3BTY3JhdGNoKDApLCBJbnZhbGlkRlBSUmVnKTsK
QEAgLTIwMzEsMTAgKzIwMzMsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBBcml0aFByb2ZpbGUqIGFyaXRoUHJvZmlsZSA9IG1fZnRsU3RhdGUuZ3JhcGguYmFzZWxp
bmVDb2RlQmxvY2tGb3IobV9ub2RlLT5vcmlnaW4uc2VtYW50aWMpLT5hcml0aFByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChtX25vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4KTsKLSAg
ICAgICAgICAgIEpJVFN1YklDKiBzdWJJQyA9IGNvZGVCbG9jaygpLT5hZGRKSVRTdWJJQyhhcml0
aFByb2ZpbGUpOwogICAgICAgICAgICAgYXV0byByZXBhdGNoaW5nRnVuY3Rpb24gPSBvcGVyYXRp
b25WYWx1ZVN1Yk9wdGltaXplOwogICAgICAgICAgICAgYXV0byBub25SZXBhdGNoaW5nRnVuY3Rp
b24gPSBvcGVyYXRpb25WYWx1ZVN1YjsKLSAgICAgICAgICAgIGNvbXBpbGVNYXRoSUMoc3ViSUMs
IHJlcGF0Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKKyAgICAgICAgICAg
IGNvbXBpbGVCaW5hcnlNYXRoSUM8SklUU3ViR2VuZXJhdG9yPihhcml0aFByb2ZpbGUsIHJlcGF0
Y2hpbmdGdW5jdGlvbiwgbm9uUmVwYXRjaGluZ0Z1bmN0aW9uKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKQEAgLTIxMjYsMTAgKzIxMjcsOSBAQCBwcml2YXRlOgogCiAgICAgICAg
IGNhc2UgVW50eXBlZFVzZTogewogICAgICAgICAgICAgQXJpdGhQcm9maWxlKiBhcml0aFByb2Zp
bGUgPSBtX2Z0bFN0YXRlLmdyYXBoLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fbm9kZS0+b3JpZ2lu
LnNlbWFudGljKS0+YXJpdGhQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9ub2RlLT5vcmlnaW4u
c2VtYW50aWMuYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgICAgICBKSVRNdWxJQyogbXVsSUMgPSBj
b2RlQmxvY2soKS0+YWRkSklUTXVsSUMoYXJpdGhQcm9maWxlKTsKICAgICAgICAgICAgIGF1dG8g
cmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWxPcHRpbWl6ZTsKICAgICAgICAg
ICAgIGF1dG8gbm9uUmVwYXRjaGluZ0Z1bmN0aW9uID0gb3BlcmF0aW9uVmFsdWVNdWw7Ci0gICAg
ICAgICAgICBjb21waWxlTWF0aElDKG11bElDLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0
Y2hpbmdGdW5jdGlvbik7CisgICAgICAgICAgICBjb21waWxlQmluYXJ5TWF0aElDPEpJVE11bEdl
bmVyYXRvcj4oYXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdG
dW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNzA4LDEwICsy
NzA4LDkgQEAgcHJpdmF0ZToKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19BU1NF
UlQobV9ncmFwaCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBVbnR5cGVk
VXNlKTsKICAgICAgICAgICAgIEFyaXRoUHJvZmlsZSogYXJpdGhQcm9maWxlID0gbV9mdGxTdGF0
ZS5ncmFwaC5iYXNlbGluZUNvZGVCbG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYyktPmFy
aXRoUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fbm9kZS0+b3JpZ2luLnNlbWFudGljLmJ5dGVj
b2RlSW5kZXgpOwotICAgICAgICAgICAgSklUTmVnSUMqIG5lZ0lDID0gY29kZUJsb2NrKCktPmFk
ZEpJVE5lZ0lDKGFyaXRoUHJvZmlsZSk7CiAgICAgICAgICAgICBhdXRvIHJlcGF0Y2hpbmdGdW5j
dGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlT3B0aW1pemU7CiAgICAgICAgICAgICBhdXRvIG5v
blJlcGF0Y2hpbmdGdW5jdGlvbiA9IG9wZXJhdGlvbkFyaXRoTmVnYXRlOwotICAgICAgICAgICAg
Y29tcGlsZU1hdGhJQyhuZWdJQywgcmVwYXRjaGluZ0Z1bmN0aW9uLCBub25SZXBhdGNoaW5nRnVu
Y3Rpb24pOworICAgICAgICAgICAgY29tcGlsZVVuYXJ5TWF0aElDPEpJVE5lZ0dlbmVyYXRvcj4o
YXJpdGhQcm9maWxlLCByZXBhdGNoaW5nRnVuY3Rpb24sIG5vblJlcGF0Y2hpbmdGdW5jdGlvbik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUTWF0aElDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkocmV2aXNpb24gMjI2Nzg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRNYXRoSUMuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAK
IC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NCw2ICs1NCw3IEBAIHN0
cnVjdCBNYXRoSUNHZW5lcmF0aW9uU3RhdGUgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgR2VuZXJh
dG9yVHlwZSwgYm9vbCgqaXNQcm9maWxlRW1wdHkpKEFyaXRoUHJvZmlsZSYpPgogY2xhc3MgSklU
TWF0aElDIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBKSVRN
YXRoSUMoQXJpdGhQcm9maWxlKiBhcml0aFByb2ZpbGUpCiAgICAgICAgIDogbV9hcml0aFByb2Zp
bGUoYXJpdGhQcm9maWxlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>