<?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>176863</bug_id>
          
          <creation_ts>2017-09-13 11:09:19 -0700</creation_ts>
          <short_desc>We should have a way of preventing a caller from making a tail call and we should use it for ProxyObject instead of using build flags</short_desc>
          <delta_ts>2017-09-27 12:59:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>don.olmstead</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>1348377</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-13 11:09:19 -0700</bug_when>
    <thetext>I talked to both Geoff and Keith about this in the last couple of days, and it&apos;s a bit gross how we do this now. We should probably just having something like:
struct NoTailCalls {
    ~NoTailCalls() { m_bit = false; }
    volatile bool m_bit;
};

And then a macro like:

#define NO_TAIL_CALLS() NoTailCalls noTailCalls ## __counter__

And then inside your function, you can do:

static void foo()
{
    NO_TAIL_CALLS();

    ...;
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348426</commentid>
    <comment_count>1</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-13 12:19:43 -0700</bug_when>
    <thetext>Yeah, it looks like at least clang respects the NoTailCalls class so this seems like a much better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348429</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-13 12:29:46 -0700</bug_when>
    <thetext>I&apos;ve ensured that this works with GCC.

#define NEVER_INLINE __attribute__((__noinline__))

struct NoTailCalls {
    ~NoTailCalls() { m_bit = false; }
    volatile bool m_bit;
};

NEVER_INLINE int target2()
{
    return 42;
}

NEVER_INLINE int target()
{
    NoTailCalls noTailCalls;
    return target2();
}

int main(int argc, char const* argv[])
{
    target();
    return 0;
}


================ target function with -O3

_Z6targetv:
.LFB4:
        .cfi_startproc
        subq    $16, %rsp
        .cfi_def_cfa_offset 24
        call    _Z7target2v
        movb    $0, 15(%rsp)
        addq    $16, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc

Without NoTailCalls, it becomes

_Z6targetv:
.LFB4:
        .cfi_startproc
        jmp     _Z7target2v
        .cfi_endproc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348579</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-13 17:16:40 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #2)
&gt; I&apos;ve ensured that this works with GCC.
&gt; 
&gt; #define NEVER_INLINE __attribute__((__noinline__))
&gt; 
&gt; struct NoTailCalls {
&gt;     ~NoTailCalls() { m_bit = false; }

I bet you just need this to call compilerFence().

&gt;     volatile bool m_bit;

Then you don&apos;t need this.

&gt; };
&gt; 
&gt; NEVER_INLINE int target2()
&gt; {
&gt;     return 42;
&gt; }
&gt; 
&gt; NEVER_INLINE int target()
&gt; {
&gt;     NoTailCalls noTailCalls;
&gt;     return target2();
&gt; }
&gt; 
&gt; int main(int argc, char const* argv[])
&gt; {
&gt;     target();
&gt;     return 0;
&gt; }
&gt; 
&gt; 
&gt; ================ target function with -O3
&gt; 
&gt; _Z6targetv:
&gt; .LFB4:
&gt;         .cfi_startproc
&gt;         subq    $16, %rsp
&gt;         .cfi_def_cfa_offset 24
&gt;         call    _Z7target2v
&gt;         movb    $0, 15(%rsp)
&gt;         addq    $16, %rsp
&gt;         .cfi_def_cfa_offset 8
&gt;         ret
&gt;         .cfi_endproc
&gt; 
&gt; Without NoTailCalls, it becomes
&gt; 
&gt; _Z6targetv:
&gt; .LFB4:
&gt;         .cfi_startproc
&gt;         jmp     _Z7target2v
&gt;         .cfi_endproc</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348711</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-14 03:18:53 -0700</bug_when>
    <thetext>Don and Alex, Could you test whether this compilerFence() / `volatile bool` NoTailCalls works on Windows (with MSVC)? If it is ok, NoTailCalls becomes platform-independent way to do this :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348717</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-14 03:54:00 -0700</bug_when>
    <thetext>(In reply to Filip Pizlo from comment #3)
&gt; (In reply to Yusuke Suzuki from comment #2)
&gt; &gt; I&apos;ve ensured that this works with GCC.
&gt; &gt; 
&gt; &gt; #define NEVER_INLINE __attribute__((__noinline__))
&gt; &gt; 
&gt; &gt; struct NoTailCalls {
&gt; &gt;     ~NoTailCalls() { m_bit = false; }
&gt; 
&gt; I bet you just need this to call compilerFence().
&gt; 
&gt; &gt;     volatile bool m_bit;
&gt; 
&gt; Then you don&apos;t need this.

Nice. I&apos;ve just checked it on GCC in https://godbolt.org.

#define NEVER_INLINE __attribute__((__noinline__))

struct NoTailCalls {
    ~NoTailCalls() { asm volatile (&quot;&quot; ::: &quot;memory&quot;); }
};

NEVER_INLINE int target2()
{
    return 42;
}

NEVER_INLINE int target()
{
    NoTailCalls noTailCalls;
    return target2();
}

int main(int argc, char const* argv[])
{
    target();
    return 0;
}

==============

target2():
  mov eax, 42
  ret
target():
  call target2()
  ret
main:
  call target()
  xor eax, eax
  ret

Yeah, it seems good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348761</commentid>
    <comment_count>6</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-09-14 08:30:18 -0700</bug_when>
    <thetext>On clang you should use __attribute__((disable_tail_calls))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348873</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-14 11:11:35 -0700</bug_when>
    <thetext>(In reply to JF Bastien from comment #6)
&gt; On clang you should use __attribute__((disable_tail_calls))

That’s not what we want here. That disables a callee from being tail called. It doesn’t defend against a caller performing a tail call</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349099</commentid>
    <comment_count>8</comment_count>
      <attachid>320847</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-14 17:03:20 -0700</bug_when>
    <thetext>Created attachment 320847
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349101</commentid>
    <comment_count>9</comment_count>
      <attachid>320847</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-14 17:04:28 -0700</bug_when>
    <thetext>Comment on attachment 320847
patch

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

&gt; Source/WTF/wtf/NoTailCalls.h:55
&gt; +#define NO_TAIL_CALLS() WTF::NoTailCalls _noTailCalls_

An alternate name could be:
DONT_TAIL_CALL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349118</commentid>
    <comment_count>10</comment_count>
      <attachid>320847</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-14 17:28:16 -0700</bug_when>
    <thetext>Comment on attachment 320847
patch

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

r=me with nit.

&gt; Source/WTF/wtf/NoTailCalls.h:42
&gt; +// from within a given function. For example, if you don&apos;t want foo

nit: you could say scope instead of function. here.

&gt;&gt; Source/WTF/wtf/NoTailCalls.h:55
&gt;&gt; +#define NO_TAIL_CALLS() WTF::NoTailCalls _noTailCalls_
&gt; 
&gt; An alternate name could be:
&gt; DONT_TAIL_CALL

I think NO_TAIL_CALLS makes more sense. DONT_TAIL_CALL implies to me that the function can&apos;t be tail called, which is the opposite of what this does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349119</commentid>
    <comment_count>11</comment_count>
      <attachid>320847</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-14 17:29:11 -0700</bug_when>
    <thetext>Comment on attachment 320847
patch

Nvm, it looks like this isn&apos;t working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349140</commentid>
    <comment_count>12</comment_count>
      <attachid>320858</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-14 17:57:01 -0700</bug_when>
    <thetext>Created attachment 320858
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349141</commentid>
    <comment_count>13</comment_count>
      <attachid>320859</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-14 17:58:45 -0700</bug_when>
    <thetext>Created attachment 320859
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349143</commentid>
    <comment_count>14</comment_count>
      <attachid>320859</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-14 18:00:06 -0700</bug_when>
    <thetext>Comment on attachment 320859
patch

r=me if tests pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349162</commentid>
    <comment_count>15</comment_count>
      <attachid>320859</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-14 19:24:02 -0700</bug_when>
    <thetext>Comment on attachment 320859
patch

Clearing flags on attachment: 320859

Committed r222071: &lt;http://trac.webkit.org/changeset/222071&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349163</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-14 19:24:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353755</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:59:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694446&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320847</attachid>
            <date>2017-09-14 17:03:20 -0700</date>
            <delta_ts>2017-09-14 17:57:01 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>14929</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTA5LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByZXZlbnRpbmcgYSBjYWxsZXIgZnJvbSBtYWtpbmcg
YSB0YWlsIGNhbGwgYW5kIHdlIHNob3VsZCB1c2UgaXQgZm9yIFByb3h5T2JqZWN0IGluc3RlYWQg
b2YgdXNpbmcgYnVpbGQgZmxhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Njg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5R2V0KToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgor
ICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJm
b3JtUHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bUlzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToK
KwogMjAxNy0wOS0xNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJdCBzaG91bGQgYmUgdmFsaWQgdG8gZXhpdCBiZWZvcmUgZWFjaCBzZXQgd2hlbiBkb2luZyBh
cml0eSBmaXh1cCB3aGVuIGlubGluaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMjIwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg3OSw2ICs4NzksNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfVU5JRklBQkxFX1NPVVJDRVMKICAgICBydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCiAg
ICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCiAgICAgcnVudGltZS9Qcm94eUNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiAgICAgcnVudGltZS9Qcm94eVJldm9r
ZS5jcHAKICAgICBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiAgICAgcnVudGltZS9SZWdFeHAu
Y3BwCkBAIC0xMDM1LDE4ICsxMDM2LDYgQEAgZW5kaWYgKCkKIAogbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAke2dlbmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXR9KQogCi0jIFRo
ZXNlIGFyZSBzcGVjaWFsIGZpbGVzIHRoYXQgd2UgY2FuJ3Qgb3IgZG9uJ3Qgd2FudCB0byB1bmlm
aWVkIHNvdXJjZSBjb21waWxlCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCi0g
ICAgcnVudGltZS9Qcm94eU9iamVjdC5jcHAKLSkKLQotIyBFeHRyYSBmbGFncyBmb3IgY29tcGls
ZSBzb3VyY2VzIGNhbiBnbyBoZXJlLgotaWYgKE5PVCBNU1ZDKQotICAgIHNldF9zb3VyY2VfZmls
ZXNfcHJvcGVydGllcyhydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9QRVJUSUVTIENPTVBJTEVf
RkxBR1MgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzKQotZWxzZSAoKQotICAgICMgRklYTUU6
IEludmVzdGlnYXRlIGlmIHdlIG5lZWQgdG8gc2V0IGEgc2ltaWxhciBmbGFnIG9uIFdpbmRvd3Mu
Ci1lbmRpZiAoKQotCiBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MjIwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw3ICsxNTU2LDcgQEAKIAkJ
NzlBRjBCRTQxRDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBRjBCRTMxRDNFRkQ0
QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5QjAwQ0JDMUM2QUIwN0UwMDg4QzY1RCAv
KiBQcm94eUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QjAwQ0I4MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKIAkJNzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjAw
Q0I5MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzlCMDBDQkUxQzZBQjA3RTAwODhD
NjVEIC8qIFByb3h5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QjAwQ0JBMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5jcHAg
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tb3B0aW1pemUtc2libGluZy1j
YWxscyI7IH07IH07CisJCTc5QjAwQ0JFMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUIwMENC
QTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICovOyB9OwogCQk3OUIwMENCRjFD
NkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTc5QjE3ODhFMUQzOTlCODAwMEIxQTU2NyAvKiBKSVRNYXRoSUNGb3J3YXJkcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBODk5RkUxRDM4NjEyRTAw
RDE4QzczIC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlCNzU5NzQxREZBNEM2MDAwNTIxNzRDIC8qIFdhc21N
ZW1vcnlJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUI3NTk3MTFERkE0QzYwMDA1MjE3NEMgLyogV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDIyMjA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOSBA
QAogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTm9UYWlsQ2Fs
bHMuaD4KIAotLy8gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBjb21waWxlIHdpdGggLWZuby1vcHRp
bWl6ZS1zaWJsaW5nLWNhbGxzIGJlY2F1c2Ugd2UgcmVseSBvbiB0aGUgbWFjaGluZSBzdGFjawor
Ly8gTm90ZSB0aGF0IHdlIHVzZSBOT19UQUlMX0NBTExTKCkgdGhyb3VnaG91dCB0aGlzIGZpbGUg
YmVjYXVzZSB3ZSByZWx5IG9uIHRoZSBtYWNoaW5lIHN0YWNrCiAvLyBncm93aW5nIGxhcmdlciBm
b3IgdGhyb3dpbmcgT09NIGVycm9ycyBmb3Igd2hlbiB3ZSBoYXZlIGFuIGVmZmVjdGl2ZWx5IGN5
Y2xpYyBwcm90b3R5cGUgY2hhaW4uCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTE4LDYgKzExOSw4
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWQKIAogc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5
T2JqZWN0LCBKU1ZhbHVlIHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewor
ICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpAQCAtMTkxLDYgKzE5NCw4IEBAIGJvb2wgUHJveHlP
YmplY3Q6OnBlcmZvcm1HZXQoRXhlY1N0YXRlKiAKIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgTk9fVEFJTF9DQUxM
UygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VT
b2Z0KCkpKSB7CkBAIC0yOTYsNiArMzAxLDggQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlu
dGVybmFsTWV0aG9kRwogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElL
RUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC0zNjIsNiArMzY5LDggQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEV4ZQogCiBib29sIFByb3h5T2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgTk9fVEFJTF9DQUxMUygp
OworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0
KCkpKSB7CkBAIC00MDQsNiArNDEzLDggQEAgYm9vbCBQcm94eU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbgogdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24+
CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
dXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBl
cmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1bHRQdXQpCiB7CisgICAgTk9fVEFJ
TF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7CkBAIC00OTksNiArNTEwLDggQEAgYm9vbCBQcm94eU9iamVjdDo6cHV0
QnlJbmRleChKU0NlbGwqIGNlbAogCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBOT19UQUlMX0NBTExT
KCk7CisKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFkoIXZtLmlzU2FmZVRvUmVjdXJzZVNv
ZnQoKSkpIHsKQEAgLTU0OSw2ICs1NjIsOCBAQCBDYWxsVHlwZSBQcm94eU9iamVjdDo6Z2V0Q2Fs
bERhdGEoSlNDZWxsCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHBlcmZv
cm1Qcm94eUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTk9fVEFJTF9DQUxMUygp
OworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0
KCkpKSB7CkBAIC02MDMsNiArNjE4LDggQEAgQ29uc3RydWN0VHlwZSBQcm94eU9iamVjdDo6Z2V0
Q29uc3RydWN0RAogdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1bHREZWxldGVGdW5jdGlvbj4KIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBEZWZhdWx0RGVsZXRlRnVuY3Rpb24gcGVyZm9ybURlZmF1bHREZWxl
dGUpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElL
RUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC02ODAsNiArNjk3LDggQEAgYm9v
bCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4KAogCiBib29sIFByb3h5T2JqZWN0
OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQogeworICAgIE5PX1RB
SUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewpAQCAtNzMxLDYgKzc1MCw4IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBy
ZXZlbnRFeHRlbnNpb25zKEpTT2IKIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUlzRXh0ZW5z
aWJsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0m
IHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC03
ODgsNiArODA5LDggQEAgYm9vbCBQcm94eU9iamVjdDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0Kgog
CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOwor
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkp
KSB7CkBAIC04ODIsNiArOTA1LDggQEAgYm9vbCBQcm94eU9iamVjdDo6ZGVmaW5lT3duUHJvcGVy
dHkoSlNPYgogCiB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyhF
eGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiB0cmFwUmVzdWx0LCBFbnVtZXJhdGlv
bk1vZGUgZW51bWVyYXRpb25Nb2RlKQogeworICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpAQCAt
MTAyNiw2ICsxMDUxLDggQEAgdm9pZCBQcm94eU9iamVjdDo6Z2V0R2VuZXJpY1Byb3BlcnR5TmFt
ZQogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7CisgICAg
Tk9fVEFJTF9DQUxMUygpOworCiAgICAgQVNTRVJUKHByb3RvdHlwZS5pc09iamVjdCgpIHx8IHBy
b3RvdHlwZS5pc051bGwoKSk7CiAKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpAQCAtMTA5MCw2
ICsxMTE3LDggQEAgYm9vbCBQcm94eU9iamVjdDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KgogCiBK
U1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBOT19UQUlMX0NBTExTKCk7CisKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKSW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjIwNTgpCisr
KyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMyIEBACisy
MDE3LTA5LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdl
IHNob3VsZCBoYXZlIGEgd2F5IG9mIHByZXZlbnRpbmcgYSBjYWxsZXIgZnJvbSBtYWtpbmcgYSB0
YWlsIGNhbGwgYW5kIHdlIHNob3VsZCB1c2UgaXQgZm9yIFByb3h5T2JqZWN0IGluc3RlYWQgb2Yg
dXNpbmcgYnVpbGQgZmxhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3Njg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHdheSBmb3IgYSBwYXJ0aWN1bGFyIGZ1bmN0aW9u
IHRvIG1hcmsKKyAgICAgICAgdGhhdCBub25lIG9mIGl0cyBjYWxscyBzaG91bGQgYmUgdGFpbCBj
YWxscy4KKyAgICAgICAgCisgICAgICAgIEl0J3MgdXNlZnVsIGluIHRoZSBmb2xsb3dpbmcgZXhh
bXBsZSBpZiB5b3UgZG9uJ3Qgd2FudCBmb28KKyAgICAgICAgdG8gZG8gYSB0YWlsIGNhbGwgdG8g
YmFyIG9yIGJhejoKKyAgICAgICAgCisgICAgICAgIGludCBmb28oYm9vbCBiKQorICAgICAgICB7
CisgICAgICAgICAgICBOT19UQUlMX0NBTExTKCk7CisgICAgICAgICAgICBpZiAoYikKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYmF6KCk7CisgICAgICAgICAgICByZXR1cm4gYmFyKCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIE5vdGUgdGhhdCB3ZSdyZSBub3Qgc2F5aW5nIHRoYXQg
YmFyL2JheiBzaG91bGQgbm90IGJlIHRhaWwgY2FsbGFibGUuIGJhci9iYXoKKyAgICAgICAgbWF5
IGhhdmUgb3RoZXIgY2FsbGVycyB0aGF0IGFyZSBhbGxvd2VkIHRvIHRhaWwgY2FsbCBpdC4gVGhp
cyBtYWNybyBqdXN0IHNheXMKKyAgICAgICAgdGhhdCBmb28gaXRzZWxmIHdpbGwgbm90IHBlcmZv
cm0gYW55IHRhaWwgY2FsbHMuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiB3dGYvTm9UYWlsQ2FsbHMuaDogQWRkZWQuCisgICAgICAgIChXVEY6
Ok5vVGFpbENhbGxzOjp+Tm9UYWlsQ2FsbHMpOgorCiAyMDE3LTA5LTE0ICBNYXJrIExhbSAgPG1h
cmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGRyZXNzU2FuaXRpemVyOiBzdGFjay1idWZm
ZXItdW5kZXJmbG93IGluIEpTQzo6UHJvYmU6OlBhZ2U6OlBhZ2UKSW5kZXg6IFNvdXJjZS9XVEYv
V1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIyMDU4KQorKysgU291cmNl
L1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE5
LDYgKzMxOSw3IEBACiAJCTUxRjE3NTI4MUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RGVj
b2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW50RGVjb2Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUYxNzUyOTFGM0Q0ODYwMDBDNzQ5
NTAgLyogUGVyc2lzdGVudEVuY29kZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUGVyc2lzdGVudEVuY29kZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MUYxNzUyQTFGM0Q0ODYwMDBDNzQ5NTAgLyogUGVyc2lzdGVudEVuY29kZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGVyc2lzdGVudEVuY29kZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2QUVDOTExRjZCNEU1QzAwNjk1RjVEIC8qIE5vVGFp
bENhbGxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vVGFpbENhbGxzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTFCRDUxMUVBNzFDQUQwMDUyNTI4MSAv
KiBTaWduYWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpZ25h
bHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzExQkQ1NTFFQTdFMTVBMDA1
MjUyODEgLyogTG9ja2xlc3NCYWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TG9ja2xlc3NCYWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENTcxRUE3
RTFBMTAwNTI1MjgxIC8qIFNpZ25hbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gU2lnbmFscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODkyLDYgKzg5Myw3
IEBACiAJCQkJMEY1QkYxNjUxRjIzMTc4MzAwMjlEOTFEIC8qIE5hdHVyYWxMb29wcy5oICovLAog
CQkJCTFBM0Y2QkU2MTc0QURBMjEwMEIyRUVBNyAvKiBOZXZlckRlc3Ryb3llZC5oICovLAogCQkJ
CTBGMEQ4NUIzMTcyMzRDQjEwMDMzODIxMCAvKiBOb0xvY2suaCAqLywKKwkJCQk1MjZBRUM5MTFG
NkI0RTVDMDA2OTVGNUQgLyogTm9UYWlsQ2FsbHMuaCAqLywKIAkJCQlBOEE0NzJEMDE1MUE4MjVC
MDA0MTIzRkYgLyogTm9uY29weWFibGUuaCAqLywKIAkJCQk3Q0VBRTVBQzFFQTZFMTBGMDBEQjY4
OTAgLyogTm90Rm91bmQuaCAqLywKIAkJCQlBOEE0NzJENTE1MUE4MjVCMDA0MTIzRkYgLyogTnVt
YmVyT2ZDb3Jlcy5jcHAgKi8sCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Ob1RhaWxDYWxscy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL05vVGFpbENhbGxzLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dURi93dGYvTm9UYWlsQ2FsbHMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQXRvbWljcy5oIgorCituYW1lc3BhY2UgV1RGIHsKKwor
c3RydWN0IE5vVGFpbENhbGxzIHsKKyAgICB+Tm9UYWlsQ2FsbHMoKQorICAgIHsKKyAgICAgICAg
Y29tcGlsZXJGZW5jZSgpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdURgorCisvLyBV
c2UgdGhpcyBtYWNybyB3aGVuIHlvdSBkb24ndCB3YW50IHRvIHBlcmZvcm0gYW55IHRhaWwgY2Fs
bHMKKy8vIGZyb20gd2l0aGluIGEgZ2l2ZW4gZnVuY3Rpb24uIEZvciBleGFtcGxlLCBpZiB5b3Ug
ZG9uJ3Qgd2FudCBmb28KKy8vIHRvIGRvIGEgdGFpbCBjYWxsIHRvIGJhciBvciBiYXosIHlvdSdk
IGRvOgorLy8gaW50IGZvbyhib29sIGIpCisvLyB7CisvLyAgICAgTk9fVEFJTF9DQUxMUygpOwor
Ly8gICAgIGlmIChiKQorLy8gICAgICAgICByZXR1cm4gYmF6KCk7CisvLyAgICAgcmV0dXJuIGJh
cigpOworLy8gfQorLy8KKy8vIFRoaXMgaXMgaGVscGZ1bCB3aGVuIGJhciBvciBiYXogaGF2ZSBv
dGhlciBjYWxsZXJzIHRoYXQgYXJlIGFsbG93ZWQKKy8vIHRvIHRhaWwgY2FsbCBpdC4KKworI2Rl
ZmluZSBOT19UQUlMX0NBTExTKCkgV1RGOjpOb1RhaWxDYWxscyBfbm9UYWlsQ2FsbHNfCg==
</data>
<flag name="review"
          id="340921"
          type_id="1"
          status="-"
          setter="keith_miller"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320858</attachid>
            <date>2017-09-14 17:57:01 -0700</date>
            <delta_ts>2017-09-14 17:58:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>15271</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTA5LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByZXZlbnRpbmcgYSBjYWxsZXIgZnJvbSBtYWtpbmcg
YSB0YWlsIGNhbGwgYW5kIHdlIHNob3VsZCB1c2UgaXQgZm9yIFByb3h5T2JqZWN0IGluc3RlYWQg
b2YgdXNpbmcgYnVpbGQgZmxhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Njg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5R2V0KToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgor
ICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJm
b3JtUHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bUlzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToK
KwogMjAxNy0wOS0xNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJdCBzaG91bGQgYmUgdmFsaWQgdG8gZXhpdCBiZWZvcmUgZWFjaCBzZXQgd2hlbiBkb2luZyBh
cml0eSBmaXh1cCB3aGVuIGlubGluaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMjIwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg3OSw2ICs4NzksNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfVU5JRklBQkxFX1NPVVJDRVMKICAgICBydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCiAg
ICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCiAgICAgcnVudGltZS9Qcm94eUNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiAgICAgcnVudGltZS9Qcm94eVJldm9r
ZS5jcHAKICAgICBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiAgICAgcnVudGltZS9SZWdFeHAu
Y3BwCkBAIC0xMDM1LDE4ICsxMDM2LDYgQEAgZW5kaWYgKCkKIAogbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAke2dlbmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXR9KQogCi0jIFRo
ZXNlIGFyZSBzcGVjaWFsIGZpbGVzIHRoYXQgd2UgY2FuJ3Qgb3IgZG9uJ3Qgd2FudCB0byB1bmlm
aWVkIHNvdXJjZSBjb21waWxlCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCi0g
ICAgcnVudGltZS9Qcm94eU9iamVjdC5jcHAKLSkKLQotIyBFeHRyYSBmbGFncyBmb3IgY29tcGls
ZSBzb3VyY2VzIGNhbiBnbyBoZXJlLgotaWYgKE5PVCBNU1ZDKQotICAgIHNldF9zb3VyY2VfZmls
ZXNfcHJvcGVydGllcyhydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9QRVJUSUVTIENPTVBJTEVf
RkxBR1MgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzKQotZWxzZSAoKQotICAgICMgRklYTUU6
IEludmVzdGlnYXRlIGlmIHdlIG5lZWQgdG8gc2V0IGEgc2ltaWxhciBmbGFnIG9uIFdpbmRvd3Mu
Ci1lbmRpZiAoKQotCiBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MjIwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw3ICsxNTU2LDcgQEAKIAkJ
NzlBRjBCRTQxRDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBRjBCRTMxRDNFRkQ0
QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5QjAwQ0JDMUM2QUIwN0UwMDg4QzY1RCAv
KiBQcm94eUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QjAwQ0I4MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKIAkJNzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjAw
Q0I5MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzlCMDBDQkUxQzZBQjA3RTAwODhD
NjVEIC8qIFByb3h5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QjAwQ0JBMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5jcHAg
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tb3B0aW1pemUtc2libGluZy1j
YWxscyI7IH07IH07CisJCTc5QjAwQ0JFMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUIwMENC
QTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICovOyB9OwogCQk3OUIwMENCRjFD
NkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTc5QjE3ODhFMUQzOTlCODAwMEIxQTU2NyAvKiBKSVRNYXRoSUNGb3J3YXJkcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBODk5RkUxRDM4NjEyRTAw
RDE4QzczIC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlCNzU5NzQxREZBNEM2MDAwNTIxNzRDIC8qIFdhc21N
ZW1vcnlJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUI3NTk3MTFERkE0QzYwMDA1MjE3NEMgLyogV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDIyMjA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOSBA
QAogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTm9UYWlsQ2Fs
bHMuaD4KIAotLy8gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBjb21waWxlIHdpdGggLWZuby1vcHRp
bWl6ZS1zaWJsaW5nLWNhbGxzIGJlY2F1c2Ugd2UgcmVseSBvbiB0aGUgbWFjaGluZSBzdGFjawor
Ly8gTm90ZSB0aGF0IHdlIHVzZSBOT19UQUlMX0NBTExTKCkgdGhyb3VnaG91dCB0aGlzIGZpbGUg
YmVjYXVzZSB3ZSByZWx5IG9uIHRoZSBtYWNoaW5lIHN0YWNrCiAvLyBncm93aW5nIGxhcmdlciBm
b3IgdGhyb3dpbmcgT09NIGVycm9ycyBmb3Igd2hlbiB3ZSBoYXZlIGFuIGVmZmVjdGl2ZWx5IGN5
Y2xpYyBwcm90b3R5cGUgY2hhaW4uCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTE4LDYgKzExOSw4
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWQKIAogc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5
T2JqZWN0LCBKU1ZhbHVlIHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewor
ICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpAQCAtMTgwLDYgKzE4Myw4IEBAIHN0YXRpYyBKU1Zh
bHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUKIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBOT19UQUlMX0NBTExTKCk7CisKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1Qcm94eUdldChleGVjLCB0aGlzLCBzbG90LnRoaXNWYWx1
ZSgpLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTkxLDYgKzE5Niw4IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1HZXQoRXhlY1N0YXRlKiAKIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOwor
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkp
KSB7CkBAIC0yOTYsNiArMzAzLDggQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFs
TWV0aG9kRwogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2
bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC00MDQsNiArNDEzLDggQEAgYm9vbCBQcm94
eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbgogdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZv
cm1EZWZhdWx0UHV0RnVuY3Rpb24+CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1
bHRQdXQpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVO
TElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC00OTksNiArNTEwLDggQEAg
Ym9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbAogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBOT19UQUlMX0NBTExTKCk7CisKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKQEAgLTU0OSw2ICs1NjIsOCBAQCBDYWxsVHlw
ZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2
bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC02MDMsNiArNjE4LDggQEAgQ29uc3RydWN0
VHlwZSBQcm94eU9iamVjdDo6Z2V0Q29uc3RydWN0RAogdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1
bHREZWxldGVGdW5jdGlvbj4KIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWZhdWx0RGVsZXRlRnVuY3Rp
b24gcGVyZm9ybURlZmF1bHREZWxldGUpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBA
IC02ODAsNiArNjk3LDggQEAgYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KAogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChV
TkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpAQCAtNzMxLDYgKzc1MCw4IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2IKIAogYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTk9fVEFJ
TF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7CkBAIC03ODgsNiArODA5LDggQEAgYm9vbCBQcm94eU9iamVjdDo6aXNF
eHRlbnNpYmxlKEpTT2JqZWN0KgogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3du
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Cisg
ICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5p
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC04ODIsNiArOTA1LDggQEAgYm9vbCBQcm94eU9i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYgogCiB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiB0
cmFwUmVzdWx0LCBFbnVtZXJhdGlvbk1vZGUgZW51bWVyYXRpb25Nb2RlKQogeworICAgIE5PX1RB
SUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewpAQCAtMTAwNSw2ICsxMDMwLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKUwogCiB2b2lkIFByb3h5T2JqZWN0OjpnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGUgZW51bWVyYXRpb25Nb2RlKQogewor
ICAgIE5PX1RBSUxfQ0FMTFMoKTsKICAgICBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5LCBlbnVtZXJhdGlvbk1vZGUpOwogfQogCkBAIC0x
MDI2LDYgKzEwNTIsOCBAQCB2b2lkIFByb3h5T2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1l
CiAKIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKIHsKKyAgICBO
T19UQUlMX0NBTExTKCk7CisKICAgICBBU1NFUlQocHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgcHJv
dG90eXBlLmlzTnVsbCgpKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDkwLDYg
KzExMTgsOCBAQCBib29sIFByb3h5T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqCiAKIEpT
VmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSgh
dm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA1OCkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTctMDktMTQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ug
c2hvdWxkIGhhdmUgYSB3YXkgb2YgcHJldmVudGluZyBhIGNhbGxlciBmcm9tIG1ha2luZyBhIHRh
aWwgY2FsbCBhbmQgd2Ugc2hvdWxkIHVzZSBpdCBmb3IgUHJveHlPYmplY3QgaW5zdGVhZCBvZiB1
c2luZyBidWlsZCBmbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgd2F5IGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24g
dG8gbWFyaworICAgICAgICB0aGF0IG5vbmUgb2YgaXRzIGNhbGxzIHNob3VsZCBiZSB0YWlsIGNh
bGxzLgorICAgICAgICAKKyAgICAgICAgSXQncyB1c2VmdWwgaW4gdGhlIGZvbGxvd2luZyBleGFt
cGxlIGlmIHlvdSBkb24ndCB3YW50IGZvbworICAgICAgICB0byBkbyBhIHRhaWwgY2FsbCB0byBi
YXIgb3IgYmF6OgorICAgICAgICAKKyAgICAgICAgaW50IGZvbyhib29sIGIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIE5PX1RBSUxfQ0FMTFMoKTsKKyAgICAgICAgICAgIGlmIChiKQorICAgICAg
ICAgICAgICAgIHJldHVybiBiYXooKTsKKyAgICAgICAgICAgIHJldHVybiBiYXIoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgTm90ZSB0aGF0IHdlJ3JlIG5vdCBzYXlpbmcgdGhhdCBi
YXIvYmF6IHNob3VsZCBub3QgYmUgdGFpbCBjYWxsYWJsZS4gYmFyL2JhegorICAgICAgICBtYXkg
aGF2ZSBvdGhlciBjYWxsZXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gdGFpbCBjYWxsIGl0LiBUaGlz
IG1hY3JvIGp1c3Qgc2F5cworICAgICAgICB0aGF0IGZvbyBpdHNlbGYgd2lsbCBub3QgcGVyZm9y
bSBhbnkgdGFpbCBjYWxscy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHd0Zi9Ob1RhaWxDYWxscy5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Tm9UYWlsQ2FsbHM6On5Ob1RhaWxDYWxscyk6CisKIDIwMTctMDktMTQgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3NTYW5pdGl6ZXI6IHN0YWNrLWJ1ZmZl
ci11bmRlcmZsb3cgaW4gSlNDOjpQcm9iZTo6UGFnZTo6UGFnZQpJbmRleDogU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjIwNTgpCisrKyBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTks
NiArMzE5LDcgQEAKIAkJNTFGMTc1MjgxRjNENDg2MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnREZWNv
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbnREZWNvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjE3NTI5MUYzRDQ4NjAwMEM3NDk1
MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQZXJzaXN0ZW50RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRjE3NTJBMUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW50RW5jb2Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MjZBRUM5MTFGNkI0RTVDMDA2OTVGNUQgLyogTm9UYWls
Q2FsbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9UYWlsQ2FsbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENTExRUE3MUNBRDAwNTI1MjgxIC8q
IFNpZ25hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFs
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTFCRDU1MUVBN0UxNUEwMDUy
NTI4MSAvKiBMb2NrbGVzc0JhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
b2NrbGVzc0JhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzExQkQ1NzFFQTdF
MUExMDA1MjUyODEgLyogU2lnbmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaWduYWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTIsNiArODkzLDcg
QEAKIAkJCQkwRjVCRjE2NTFGMjMxNzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8sCiAJ
CQkJMUEzRjZCRTYxNzRBREEyMTAwQjJFRUE3IC8qIE5ldmVyRGVzdHJveWVkLmggKi8sCiAJCQkJ
MEYwRDg1QjMxNzIzNENCMTAwMzM4MjEwIC8qIE5vTG9jay5oICovLAorCQkJCTUyNkFFQzkxMUY2
QjRFNUMwMDY5NUY1RCAvKiBOb1RhaWxDYWxscy5oICovLAogCQkJCUE4QTQ3MkQwMTUxQTgyNUIw
MDQxMjNGRiAvKiBOb25jb3B5YWJsZS5oICovLAogCQkJCTdDRUFFNUFDMUVBNkUxMEYwMERCNjg5
MCAvKiBOb3RGb3VuZC5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1i
ZXJPZkNvcmVzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL05vVGFpbENhbGxzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTm9UYWlsQ2FsbHMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV1RGL3d0Zi9Ob1RhaWxDYWxscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBdG9taWNzLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitz
dHJ1Y3QgTm9UYWlsQ2FsbHMgeworICAgIH5Ob1RhaWxDYWxscygpCisgICAgeworICAgICAgICBj
b21waWxlckZlbmNlKCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKy8vIFVz
ZSB0aGlzIG1hY3JvIHdoZW4geW91IGRvbid0IHdhbnQgdG8gcGVyZm9ybSBhbnkgdGFpbCBjYWxs
cyBmcm9tIHdpdGhpbiBhIGdpdmVuIHNjb3BlLgorLy8gRm9yIGV4YW1wbGUsIGlmIHlvdSBkb24n
dCB3YW50IHRoZSBmdW5jdGlvbmZvbyB0byBkbyBhIHRhaWwgY2FsbCB0byBiYXIgb3IgYmF6LCB5
b3UnZCBkbzoKKy8vIGludCBmb28oYm9vbCBiKQorLy8geworLy8gICAgIE5PX1RBSUxfQ0FMTFMo
KTsKKy8vICAgICBpZiAoYikKKy8vICAgICAgICAgcmV0dXJuIGJheigpOworLy8gICAgIHJldHVy
biBiYXIoKTsKKy8vIH0KKy8vCisvLyBUaGlzIGlzIGhlbHBmdWwgd2hlbiBiYXIgb3IgYmF6IGhh
dmUgb3RoZXIgY2FsbGVycyB0aGF0IGFyZSBhbGxvd2VkIHRvIHRhaWwgY2FsbCBpdC4KKworI2Rl
ZmluZSBOT19UQUlMX0NBTExTKCkgV1RGOjpOb1RhaWxDYWxscyBfbm9UYWlsQ2FsbHNfCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320859</attachid>
            <date>2017-09-14 17:58:45 -0700</date>
            <delta_ts>2017-09-14 19:24:02 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>15272</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyMDY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTA5LTE0ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlIHNob3VsZCBoYXZlIGEgd2F5IG9mIHByZXZlbnRpbmcgYSBjYWxsZXIgZnJvbSBtYWtpbmcg
YSB0YWlsIGNhbGwgYW5kIHdlIHNob3VsZCB1c2UgaXQgZm9yIFByb3h5T2JqZWN0IGluc3RlYWQg
b2YgdXNpbmcgYnVpbGQgZmxhZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Njg2MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBydW50aW1lL1Byb3h5T2JqZWN0
LmNwcDoKKyAgICAgICAgKEpTQzo6cGVyZm9ybVByb3h5R2V0KToKKyAgICAgICAgKEpTQzo6UHJv
eHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KToKKyAgICAgICAg
KEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBy
b3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybVB1dCk6CisgICAgICAgIChKU0M6OnBlcmZvcm1Qcm94eUNhbGwpOgor
ICAgICAgICAoSlNDOjpwZXJmb3JtUHJveHlDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpQcm94
eU9iamVjdDo6cGVyZm9ybURlbGV0ZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJm
b3JtUHJldmVudEV4dGVuc2lvbnMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9y
bUlzRXh0ZW5zaWJsZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5l
T3duUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blBy
b3BlcnR5TmFtZXMpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3Rv
dHlwZSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKToK
KwogMjAxNy0wOS0xNCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBJdCBzaG91bGQgYmUgdmFsaWQgdG8gZXhpdCBiZWZvcmUgZWFjaCBzZXQgd2hlbiBkb2luZyBh
cml0eSBmaXh1cCB3aGVuIGlubGluaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAyMjIwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTg3OSw2ICs4NzksNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfVU5JRklBQkxFX1NPVVJDRVMKICAgICBydW50aW1lL1Byb3BlcnR5VGFibGUuY3BwCiAg
ICAgcnVudGltZS9Qcm90b3R5cGVNYXAuY3BwCiAgICAgcnVudGltZS9Qcm94eUNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwCiAgICAgcnVudGltZS9Qcm94eVJldm9r
ZS5jcHAKICAgICBydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCiAgICAgcnVudGltZS9SZWdFeHAu
Y3BwCkBAIC0xMDM1LDE4ICsxMDM2LDYgQEAgZW5kaWYgKCkKIAogbGlzdChBUFBFTkQgSmF2YVNj
cmlwdENvcmVfU09VUkNFUyAke2dlbmVyYXRlVW5pZmllZFNvdXJjZXNPdXRwdXR9KQogCi0jIFRo
ZXNlIGFyZSBzcGVjaWFsIGZpbGVzIHRoYXQgd2UgY2FuJ3Qgb3IgZG9uJ3Qgd2FudCB0byB1bmlm
aWVkIHNvdXJjZSBjb21waWxlCi1saXN0KEFQUEVORCBKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCi0g
ICAgcnVudGltZS9Qcm94eU9iamVjdC5jcHAKLSkKLQotIyBFeHRyYSBmbGFncyBmb3IgY29tcGls
ZSBzb3VyY2VzIGNhbiBnbyBoZXJlLgotaWYgKE5PVCBNU1ZDKQotICAgIHNldF9zb3VyY2VfZmls
ZXNfcHJvcGVydGllcyhydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBQUk9QRVJUSUVTIENPTVBJTEVf
RkxBR1MgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzKQotZWxzZSAoKQotICAgICMgRklYTUU6
IEludmVzdGlnYXRlIGlmIHdlIG5lZWQgdG8gc2V0IGEgc2ltaWxhciBmbGFnIG9uIFdpbmRvd3Mu
Ci1lbmRpZiAoKQotCiBzZXQoSmF2YVNjcmlwdENvcmVfT0JKRUNUX0xVVF9TT1VSQ0VTCiAgICAg
cnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvQXJyYXlJdGVyYXRvclBy
b3RvdHlwZS5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MjIwNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTU1Niw3ICsxNTU2LDcgQEAKIAkJ
NzlBRjBCRTQxRDNFRkQ0QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBRjBCRTMxRDNFRkQ0
QzAwRTk1RkE1IC8qIEpJVE1hdGhJQ0lubGluZVJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTc5QjAwQ0JDMUM2QUIwN0UwMDg4QzY1RCAv
KiBQcm94eUNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QjAwQ0I4MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9y
LmNwcCAqLzsgfTsKIAkJNzlCMDBDQkQxQzZBQjA3RTAwODhDNjVEIC8qIFByb3h5Q29uc3RydWN0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjAw
Q0I5MUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eUNvbnN0cnVjdG9yLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJNzlCMDBDQkUxQzZBQjA3RTAwODhD
NjVEIC8qIFByb3h5T2JqZWN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDc5QjAwQ0JBMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5jcHAg
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1mbm8tb3B0aW1pemUtc2libGluZy1j
YWxscyI7IH07IH07CisJCTc5QjAwQ0JFMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9iamVjdC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3OUIwMENC
QTFDNkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuY3BwICovOyB9OwogCQk3OUIwMENCRjFD
NkFCMDdFMDA4OEM2NUQgLyogUHJveHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc5QjAwQ0JCMUM2QUIwN0UwMDg4QzY1RCAvKiBQcm94eU9i
amVjdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTc5QjE3ODhFMUQzOTlCODAwMEIxQTU2NyAvKiBKSVRNYXRoSUNGb3J3YXJkcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzlBODk5RkUxRDM4NjEyRTAw
RDE4QzczIC8qIEpJVE1hdGhJQ0ZvcndhcmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzlCNzU5NzQxREZBNEM2MDAwNTIxNzRDIC8qIFdhc21N
ZW1vcnlJbmZvcm1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3OUI3NTk3MTFERkE0QzYwMDA1MjE3NEMgLyogV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmNwcCAqLzsgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm94eU9iamVjdC5jcHAJKHJldmlzaW9uIDIyMjA1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUsOSBA
QAogI2luY2x1ZGUgIlNsb3RWaXNpdG9ySW5saW5lcy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKICNpbmNsdWRlICJWTUlubGluZXMuaCIKKyNpbmNsdWRlIDx3dGYvTm9UYWlsQ2Fs
bHMuaD4KIAotLy8gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBjb21waWxlIHdpdGggLWZuby1vcHRp
bWl6ZS1zaWJsaW5nLWNhbGxzIGJlY2F1c2Ugd2UgcmVseSBvbiB0aGUgbWFjaGluZSBzdGFjawor
Ly8gTm90ZSB0aGF0IHdlIHVzZSBOT19UQUlMX0NBTExTKCkgdGhyb3VnaG91dCB0aGlzIGZpbGUg
YmVjYXVzZSB3ZSByZWx5IG9uIHRoZSBtYWNoaW5lIHN0YWNrCiAvLyBncm93aW5nIGxhcmdlciBm
b3IgdGhyb3dpbmcgT09NIGVycm9ycyBmb3Igd2hlbiB3ZSBoYXZlIGFuIGVmZmVjdGl2ZWx5IGN5
Y2xpYyBwcm90b3R5cGUgY2hhaW4uCiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTE4LDYgKzExOSw4
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBzX3Byb3h5QWxyZWFkeVJldm9rZWQKIAogc3RhdGljIEpT
VmFsdWUgcGVyZm9ybVByb3h5R2V0KEV4ZWNTdGF0ZSogZXhlYywgUHJveHlPYmplY3QqIHByb3h5
T2JqZWN0LCBKU1ZhbHVlIHJlY2VpdmVyLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogewor
ICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0u
aXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpAQCAtMTgwLDYgKzE4Myw4IEBAIHN0YXRpYyBKU1Zh
bHVlIHBlcmZvcm1Qcm94eUdldChFeGVjU3RhdGUKIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUdldChFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5
U2xvdCYgc2xvdCkKIHsKKyAgICBOT19UQUlMX0NBTExTKCk7CisKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1Qcm94eUdldChleGVjLCB0aGlzLCBzbG90LnRoaXNWYWx1
ZSgpLCBwcm9wZXJ0eU5hbWUpOwpAQCAtMTkxLDYgKzE5Niw4IEBAIGJvb2wgUHJveHlPYmplY3Q6
OnBlcmZvcm1HZXQoRXhlY1N0YXRlKiAKIAogYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVy
bmFsTWV0aG9kR2V0T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOwor
CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkp
KSB7CkBAIC0yOTYsNiArMzAzLDggQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybUludGVybmFs
TWV0aG9kRwogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJvcGVydHkoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7
CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2
bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC00MDQsNiArNDEzLDggQEAgYm9vbCBQcm94
eU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90QnlJbgogdGVtcGxhdGUgPHR5cGVuYW1lIFBlcmZv
cm1EZWZhdWx0UHV0RnVuY3Rpb24+CiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0KEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBwdXRWYWx1ZSwgSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIFBlcmZvcm1EZWZhdWx0UHV0RnVuY3Rpb24gcGVyZm9ybURlZmF1
bHRQdXQpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVO
TElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC00OTksNiArNTEwLDggQEAg
Ym9vbCBQcm94eU9iamVjdDo6cHV0QnlJbmRleChKU0NlbGwqIGNlbAogCiBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBwZXJmb3JtUHJveHlDYWxsKEV4ZWNTdGF0ZSogZXhlYykK
IHsKKyAgICBOT19UQUlMX0NBTExTKCk7CisKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoVU5MSUtFTFko
IXZtLmlzU2FmZVRvUmVjdXJzZVNvZnQoKSkpIHsKQEAgLTU0OSw2ICs1NjIsOCBAQCBDYWxsVHlw
ZSBQcm94eU9iamVjdDo6Z2V0Q2FsbERhdGEoSlNDZWxsCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHBlcmZvcm1Qcm94eUNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2
bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC02MDMsNiArNjE4LDggQEAgQ29uc3RydWN0
VHlwZSBQcm94eU9iamVjdDo6Z2V0Q29uc3RydWN0RAogdGVtcGxhdGUgPHR5cGVuYW1lIERlZmF1
bHREZWxldGVGdW5jdGlvbj4KIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBEZWZhdWx0RGVsZXRlRnVuY3Rp
b24gcGVyZm9ybURlZmF1bHREZWxldGUpCiB7CisgICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBA
IC02ODAsNiArNjk3LDggQEAgYm9vbCBQcm94eU9iamVjdDo6ZGVsZXRlUHJvcGVydHlCeUluZGV4
KAogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoRXhlY1N0YXRl
KiBleGVjKQogeworICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChV
TkxJS0VMWSghdm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpAQCAtNzMxLDYgKzc1MCw4IEBA
IGJvb2wgUHJveHlPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTT2IKIAogYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybUlzRXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCiB7CisgICAgTk9fVEFJ
TF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5pc1NhZmVUb1Jl
Y3Vyc2VTb2Z0KCkpKSB7CkBAIC03ODgsNiArODA5LDggQEAgYm9vbCBQcm94eU9iamVjdDo6aXNF
eHRlbnNpYmxlKEpTT2JqZWN0KgogCiBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3du
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBjb25z
dCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGJvb2wgc2hvdWxkVGhyb3cpCiB7Cisg
ICAgTk9fVEFJTF9DQUxMUygpOworCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKFVOTElLRUxZKCF2bS5p
c1NhZmVUb1JlY3Vyc2VTb2Z0KCkpKSB7CkBAIC04ODIsNiArOTA1LDggQEAgYm9vbCBQcm94eU9i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYgogCiB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiB0
cmFwUmVzdWx0LCBFbnVtZXJhdGlvbk1vZGUgZW51bWVyYXRpb25Nb2RlKQogeworICAgIE5PX1RB
SUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSghdm0uaXNTYWZlVG9S
ZWN1cnNlU29mdCgpKSkgewpAQCAtMTAwNSw2ICsxMDMwLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhKUwogCiB2b2lkIFByb3h5T2JqZWN0OjpnZXRQcm9wZXJ0eU5h
bWVzKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZUFycmF5LCBFbnVtZXJhdGlvbk1vZGUgZW51bWVyYXRpb25Nb2RlKQogewor
ICAgIE5PX1RBSUxfQ0FMTFMoKTsKICAgICBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhvYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5TmFtZUFycmF5LCBlbnVtZXJhdGlvbk1vZGUpOwogfQogCkBAIC0x
MDI2LDYgKzEwNTIsOCBAQCB2b2lkIFByb3h5T2JqZWN0OjpnZXRHZW5lcmljUHJvcGVydHlOYW1l
CiAKIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKIHsKKyAgICBO
T19UQUlMX0NBTExTKCk7CisKICAgICBBU1NFUlQocHJvdG90eXBlLmlzT2JqZWN0KCkgfHwgcHJv
dG90eXBlLmlzTnVsbCgpKTsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CkBAIC0xMDkwLDYg
KzExMTgsOCBAQCBib29sIFByb3h5T2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqCiAKIEpT
VmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQog
eworICAgIE5PX1RBSUxfQ0FMTFMoKTsKKwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChVTkxJS0VMWSgh
dm0uaXNTYWZlVG9SZWN1cnNlU29mdCgpKSkgewpJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjA1OCkKKysr
IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTctMDktMTQgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CisKKyAgICAgICAgV2Ug
c2hvdWxkIGhhdmUgYSB3YXkgb2YgcHJldmVudGluZyBhIGNhbGxlciBmcm9tIG1ha2luZyBhIHRh
aWwgY2FsbCBhbmQgd2Ugc2hvdWxkIHVzZSBpdCBmb3IgUHJveHlPYmplY3QgaW5zdGVhZCBvZiB1
c2luZyBidWlsZCBmbGFncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2ODYzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEgd2F5IGZvciBhIHBhcnRpY3VsYXIgZnVuY3Rpb24g
dG8gbWFyaworICAgICAgICB0aGF0IG5vbmUgb2YgaXRzIGNhbGxzIHNob3VsZCBiZSB0YWlsIGNh
bGxzLgorICAgICAgICAKKyAgICAgICAgSXQncyB1c2VmdWwgaW4gdGhlIGZvbGxvd2luZyBleGFt
cGxlIGlmIHlvdSBkb24ndCB3YW50IGZvbworICAgICAgICB0byBkbyBhIHRhaWwgY2FsbCB0byBi
YXIgb3IgYmF6OgorICAgICAgICAKKyAgICAgICAgaW50IGZvbyhib29sIGIpCisgICAgICAgIHsK
KyAgICAgICAgICAgIE5PX1RBSUxfQ0FMTFMoKTsKKyAgICAgICAgICAgIGlmIChiKQorICAgICAg
ICAgICAgICAgIHJldHVybiBiYXooKTsKKyAgICAgICAgICAgIHJldHVybiBiYXIoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgTm90ZSB0aGF0IHdlJ3JlIG5vdCBzYXlpbmcgdGhhdCBi
YXIvYmF6IHNob3VsZCBub3QgYmUgdGFpbCBjYWxsYWJsZS4gYmFyL2JhegorICAgICAgICBtYXkg
aGF2ZSBvdGhlciBjYWxsZXJzIHRoYXQgYXJlIGFsbG93ZWQgdG8gdGFpbCBjYWxsIGl0LiBUaGlz
IG1hY3JvIGp1c3Qgc2F5cworICAgICAgICB0aGF0IGZvbyBpdHNlbGYgd2lsbCBub3QgcGVyZm9y
bSBhbnkgdGFpbCBjYWxscy4KKworICAgICAgICAqIFdURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHd0Zi9Ob1RhaWxDYWxscy5oOiBBZGRlZC4KKyAgICAgICAgKFdURjo6
Tm9UYWlsQ2FsbHM6On5Ob1RhaWxDYWxscyk6CisKIDIwMTctMDktMTQgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZHJlc3NTYW5pdGl6ZXI6IHN0YWNrLWJ1ZmZl
ci11bmRlcmZsb3cgaW4gSlNDOjpQcm9iZTo6UGFnZTo6UGFnZQpJbmRleDogU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjIwNTgpCisrKyBTb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTks
NiArMzE5LDcgQEAKIAkJNTFGMTc1MjgxRjNENDg2MDAwQzc0OTUwIC8qIFBlcnNpc3RlbnREZWNv
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBlcnNpc3RlbnREZWNvZGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjE3NTI5MUYzRDQ4NjAwMEM3NDk1
MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQZXJzaXN0ZW50RW5jb2Rlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxRjE3NTJBMUYzRDQ4NjAwMEM3NDk1MCAvKiBQZXJzaXN0ZW50RW5jb2Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQZXJzaXN0ZW50RW5jb2Rlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MjZBRUM5MTFGNkI0RTVDMDA2OTVGNUQgLyogTm9UYWls
Q2FsbHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9UYWlsQ2FsbHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTMxMUJENTExRUE3MUNBRDAwNTI1MjgxIC8q
IFNpZ25hbHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2lnbmFs
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzMTFCRDU1MUVBN0UxNUEwMDUy
NTI4MSAvKiBMb2NrbGVzc0JhZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
b2NrbGVzc0JhZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MzExQkQ1NzFFQTdF
MUExMDA1MjUyODEgLyogU2lnbmFscy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTaWduYWxzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04OTIsNiArODkzLDcg
QEAKIAkJCQkwRjVCRjE2NTFGMjMxNzgzMDAyOUQ5MUQgLyogTmF0dXJhbExvb3BzLmggKi8sCiAJ
CQkJMUEzRjZCRTYxNzRBREEyMTAwQjJFRUE3IC8qIE5ldmVyRGVzdHJveWVkLmggKi8sCiAJCQkJ
MEYwRDg1QjMxNzIzNENCMTAwMzM4MjEwIC8qIE5vTG9jay5oICovLAorCQkJCTUyNkFFQzkxMUY2
QjRFNUMwMDY5NUY1RCAvKiBOb1RhaWxDYWxscy5oICovLAogCQkJCUE4QTQ3MkQwMTUxQTgyNUIw
MDQxMjNGRiAvKiBOb25jb3B5YWJsZS5oICovLAogCQkJCTdDRUFFNUFDMUVBNkUxMEYwMERCNjg5
MCAvKiBOb3RGb3VuZC5oICovLAogCQkJCUE4QTQ3MkQ1MTUxQTgyNUIwMDQxMjNGRiAvKiBOdW1i
ZXJPZkNvcmVzLmNwcCAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL05vVGFpbENhbGxzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTm9UYWlsQ2FsbHMuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV1RGL3d0Zi9Ob1RhaWxDYWxscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJBdG9taWNzLmgiCisKK25hbWVzcGFjZSBXVEYgeworCitz
dHJ1Y3QgTm9UYWlsQ2FsbHMgeworICAgIH5Ob1RhaWxDYWxscygpCisgICAgeworICAgICAgICBj
b21waWxlckZlbmNlKCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKKy8vIFVz
ZSB0aGlzIG1hY3JvIHdoZW4geW91IGRvbid0IHdhbnQgdG8gcGVyZm9ybSBhbnkgdGFpbCBjYWxs
cyBmcm9tIHdpdGhpbiBhIGdpdmVuIHNjb3BlLgorLy8gRm9yIGV4YW1wbGUsIGlmIHlvdSBkb24n
dCB3YW50IHRoZSBmdW5jdGlvbiBmb28gdG8gZG8gYSB0YWlsIGNhbGwgdG8gYmFyIG9yIGJheiwg
eW91J2QgZG86CisvLyBpbnQgZm9vKGJvb2wgYikKKy8vIHsKKy8vICAgICBOT19UQUlMX0NBTExT
KCk7CisvLyAgICAgaWYgKGIpCisvLyAgICAgICAgIHJldHVybiBiYXooKTsKKy8vICAgICByZXR1
cm4gYmFyKCk7CisvLyB9CisvLworLy8gVGhpcyBpcyBoZWxwZnVsIHdoZW4gYmFyIG9yIGJheiBo
YXZlIG90aGVyIGNhbGxlcnMgdGhhdCBhcmUgYWxsb3dlZCB0byB0YWlsIGNhbGwgaXQuCisKKyNk
ZWZpbmUgTk9fVEFJTF9DQUxMUygpIFdURjo6Tm9UYWlsQ2FsbHMgX25vVGFpbENhbGxzXwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>