<?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>158809</bug_id>
          
          <creation_ts>2016-06-15 14:47:54 -0700</creation_ts>
          <short_desc>[Cocoa] Clean up / optimize ResourceResponse::platformLazyInit(InitLevel)</short_desc>
          <delta_ts>2016-07-06 08:39:21 -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>Platform</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1202696</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 14:47:54 -0700</bug_when>
    <thetext>Clean up / optimize ResourceResponse::platformLazyInit(InitLevel).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202698</commentid>
    <comment_count>1</comment_count>
      <attachid>281388</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 15:02:27 -0700</bug_when>
    <thetext>Created attachment 281388
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202713</commentid>
    <comment_count>2</comment_count>
      <attachid>281392</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 15:21:34 -0700</bug_when>
    <thetext>Created attachment 281392
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202758</commentid>
    <comment_count>3</comment_count>
      <attachid>281403</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 16:58:12 -0700</bug_when>
    <thetext>Created attachment 281403
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202773</commentid>
    <comment_count>4</comment_count>
      <attachid>281408</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 17:16:32 -0700</bug_when>
    <thetext>Created attachment 281408
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202798</commentid>
    <comment_count>5</comment_count>
      <attachid>281408</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-15 17:53:00 -0700</bug_when>
    <thetext>Comment on attachment 281408
Patch

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

&gt; Source/WebCore/platform/network/HTTPParsers.h:81
&gt; +AtomicString extractReasonPhraseFromHTTPStatusLine(const String&amp;);

I suggest changing the argument from const String&amp; to StringView.

&gt; Source/WebCore/platform/network/cocoa/ResourceResponseCocoa.mm:171
&gt; +    CFHTTPMessageRef messageRef = CFURLResponseGetHTTPResponse([httpResponse _CFURLResponse]);

I suggest using auto here.

&gt; Source/WebCore/platform/network/cocoa/ResourceResponseCocoa.mm:174
&gt; +    RetainPtr&lt;CFDictionaryRef&gt; headers = adoptCF(CFHTTPMessageCopyAllHeaderFields(messageRef));

I suggest using auto for the result of adoptCF.

&gt; Source/WebCore/platform/network/cocoa/ResourceResponseCocoa.mm:179
&gt; +            CFStringRef value;
&gt; +            if (CFDictionaryGetValueIfPresent(headers.get(), commonHeader, (const void **)&amp;value))
&gt; +                headersMap.set(commonHeader, value);

I suggest using const void* as the type of the local variable and doing the typecast when calling set.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202804</commentid>
    <comment_count>6</comment_count>
      <attachid>281408</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 18:16:05 -0700</bug_when>
    <thetext>Comment on attachment 281408
Patch

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

&gt;&gt; Source/WebCore/platform/network/HTTPParsers.h:81
&gt;&gt; +AtomicString extractReasonPhraseFromHTTPStatusLine(const String&amp;);
&gt; 
&gt; I suggest changing the argument from const String&amp; to StringView.

I tried doing this but the issue was that the call sites have a CFStringRef (not a String). StringView does not have a constructor that takes a CFStringRef so using StringView here would force the call sites to explicitly construct a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202822</commentid>
    <comment_count>7</comment_count>
      <attachid>281424</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 19:06:21 -0700</bug_when>
    <thetext>Created attachment 281424
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202831</commentid>
    <comment_count>8</comment_count>
      <attachid>281427</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 19:28:14 -0700</bug_when>
    <thetext>Created attachment 281427
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202837</commentid>
    <comment_count>9</comment_count>
      <attachid>281430</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 19:58:47 -0700</bug_when>
    <thetext>Created attachment 281430
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202838</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-15 19:59:57 -0700</bug_when>
    <thetext>Committed r202121: &lt;http://trac.webkit.org/changeset/202121&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1202942</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-06-16 09:30:03 -0700</bug_when>
    <thetext>Looks like this may have been a 1% PLT progression on MacBookPro, working on confirming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208228</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-06 08:39:21 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Looks like this may have been a 1% PLT progression on MacBookPro, working on
&gt; confirming.

Confirmed progression on PLT.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281388</attachid>
            <date>2016-06-15 15:02:27 -0700</date>
            <delta_ts>2016-06-15 15:21:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615150226.patch</filename>
            <type>text/plain</type>
            <size>13498</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVlNzVhZjIyMjgyMTc5MjQ0OGNkZTBj
ZjRjNmNmYjBiNzlhYWZkZjQuLmE2YWE3MmUxM2ZhMDJhOWQ1MjM1ZDFlZWI1MzkyYzU4ODdjM2M1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRo
b2QgdG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAg
ICAgIGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRv
QXRvbWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxl
bkB5YW5kZXgucnU+CiAKICAgICAgICAgT25seSBNYWMgcG9ydCBuZWVkcyBPYmpDIEFQSSBmb3Ig
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTk4MDEyZGJmYzY2NmUxNmViZDFiM2E2Y2I0MmJjODZhOTlkZTUx
Mi4uMjA2ZTUxNTQyMzYxNjQ0NDJhMTg2YzAxZGRkMjdjNmJlY2NjZWIxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ4IEBACisyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgLyBvcHRpbWl6ZSBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RSZWFzb25Q
aHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgSGF2ZSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKCkgcmV0dXJuIGFuIEF0b21pY1N0cmluZyBhcyB0aGUKKyAgICAgICAgUmVhc29uIGlz
IHN0b3JlZCBhcyBhbiBBdG9taWNTdHJpbmcgb24gUmVzb3VyY2VSZXNwb25zZS4gSGF2ZSB0aGUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24gdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0
b21pY1N0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlc3BvbnNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0RvdWJsZVF1b3RlKToKKyAgICAgICAgTW92ZSB0aGUgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdEb3VibGVRdW90ZSBsb2dpYyBmcm9tIHBsYXRmb3JtTGF6eUluaXQoKQorICAgICAgICB0byBp
dHMgb3duIGZ1bmN0aW9uLiBIYXZlIGl0IHVzZSBTdHJpbmdWaWV3OjpzdWJTdHJpbmcoKTo6dG9B
dG9taWNTdHJpbmcoKQorICAgICAgICB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IGF0b21pemluZyB0
aGUgdGV4dEVuY29kaW5nTmFtZSB0aGF0IGhhcyBzdXJyb3VuZGluZworICAgICAgICBkb3VibGUt
cXVvdGVzLgorCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxh
enlJbml0KToKKyAgICAgICAgLSBVc2UgQXV0b2RyYWluZWRQb29sIGluc3RlYWQgb2YgTlNBdXRv
cmVsZWFzZVBvb2wgZm9yIGNvbnZlbmllbmNlIGFuZCBoYXZlCisgICAgICAgICAgb25seSAxIHBv
b2wgaW5zdGVhZCBvZiAyLgorICAgICAgICAtIERyb3AgKG1faW5pdExldmVsIDwgQ29tbW9uRmll
bGRzT25seSAmJiBpbml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkKKyAgICAgICAgICBjaGVj
ayBoYXMgdGhpcyBpcyBhbHdheXMgdHJ1ZSBhbmQgcmVwbGFjZSB3aXRoIGFuIGFzc2VydGlvbi4g
V2UgbmV2ZXIKKyAgICAgICAgICBjYWxsIHBsYXRmb3JtTGF6eUluaXQoKSB3aXRoIGEgdmFsdWUg
bG93ZXIgdGhhbiBDb21tb25GaWVsZHNPbmx5LiBXZQorICAgICAgICAgIGFscmVhZHkgcmV0dXJu
IGVhcmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIGlmCisgICAgICAgICAgbV9p
bml0TGV2ZWwgPj0gaW5pdExldmVsLgorICAgICAgICAtIE1vdmUgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdEb3VibGVRdW90ZSgpIGxvZ2ljIG91dCBpbnRvIGl0cyBvd24gZnVuY3Rpb24KKyAgICAg
ICAgICBmb3IgY2xhcml0eS4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5IGNvcHlOU1VSTFJl
c3BvbnNlU3RhdHVzTGluZSgpIGZ1bmN0aW9uIGFuZCBjYWxsIGRpcmVjdGx5CisgICAgICAgICAg
Q0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoKSBzaW5jZSB3ZSBhbHJlYWR5IGhh
dmUgYQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgYXQgdGhlIGNhbGwgc2l0ZS4KKyAgICAg
ICAgLSBSZXR1cm4gZWFybHkgaWYgdGhlIHJlc3BvbnNlIGlmIG5vdCBvZiBOU0hUVFBVUkxSZXNw
b25zZSB0eXBlIHRvIHJlZHVjZQorICAgICAgICAgIGJyYW5jaGluZy4KKyAgICAgICAgLSBEcm9w
IHVubmVjZXNzYXJ5IChtX2luaXRMZXZlbCA8IEFsbEZpZWxkcykgY2hlY2sgYXMgd2Ugd291bGQg
aGF2ZSByZXR1cm5lZAorICAgICAgICAgIGVhcmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1
bmN0aW9uIGlmIHRoaXMgd2VyZSB0aGUgY2FzZSB3aGVuIGNoZWNraW5nCisgICAgICAgICAgKG1f
aW5pdExldmVsID49IGluaXRMZXZlbCkuCisgICAgICAgIC0gQ2xlYXIgbV9odHRwSGVhZGVyRmll
bGRzIG9ubHkgaWYgaW5pdExldmVsIGlzIEFsbEZpZWxkcyBiZWNhdXNlIHRoZSBvbmx5CisgICAg
ICAgICAgY2FzZSB3ZSBoYXZlIGhlYWRlcnMgaW4gbV9odHRwSGVhZGVyRmllbGRzIGlzIGlmIHdl
IGRpZCBhIENvbW1vbkZpZWxkc09ubHkKKyAgICAgICAgICBpbml0aWFsaXphdGlvbiBpbiB0aGUg
cGFzdCBhbmQgd2UgYXJlIG5vdyBkb2luZyBhIEFsbEZpZWxkcyBpbml0aWFsaXphdGlvbi4KKwog
MjAxNi0wNi0xNSAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgRW5hYmxpbmcgU2hhZG93IERPTSBmb3IgYWxsIHBsYXRmb3Jtcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA3MzllOTQ1NWI3YmI5ZGJhODhmMjJkMjRhNWVh
ZGUzMjZiYmE0ZWMzLi5kOGI4MzAzMWM2NGE1MzdmMmFjNjQ0ZDBiNmVmYzBiNmFlNjlkZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICBTdHJpbmcgdG9TdHJpbmdXaXRob3V0Q29w
eWluZygpIGNvbnN0OworICAgIEF0b21pY1N0cmluZyB0b0F0b21pY1N0cmluZygpIGNvbnN0Owog
CiAjaWYgVVNFKENGKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29udmVydHMgbnVsbCBzdHJpbmdz
IHRvIGVtcHR5IHN0cmluZ3MuCkBAIC00NTEsNiArNDUyLDEzIEBAIGlubGluZSBTdHJpbmcgU3Ry
aW5nVmlldzo6dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVyczE2
KCksIGxlbmd0aCgpKTsKIH0KIAoraW5saW5lIEF0b21pY1N0cmluZyBTdHJpbmdWaWV3Ojp0b0F0
b21pY1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4g
QXRvbWljU3RyaW5nKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbWlj
U3RyaW5nKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7Cit9CisKIGlubGluZSBmbG9hdCBTdHJp
bmdWaWV3Ojp0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApp
bmRleCBmYWM4YWY2MjYwYzA1NTA1ZGEyNjlmODVjYmZiZjgwYjQ3MDNhNzFiLi40OGJhODlmMzAw
OTJkMDVjMjMzNWUzNDk3OTI3OTAwNGFmODYyYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNDYxLDEyICs0NjEsMTMgQEAgQ29u
dGVudFR5cGVPcHRpb25zRGlzcG9zaXRpb24gcGFyc2VDb250ZW50VHlwZU9wdGlvbnNIZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIKIH0KICNlbmRpZgogCi1TdHJpbmcgZXh0cmFjdFJlYXNvblBo
cmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCitBdG9taWNT
dHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcm
IHN0YXR1c0xpbmUpCiB7Ci0gICAgc2l6ZV90IHNwYWNlUG9zID0gc3RhdHVzTGluZS5maW5kKCcg
Jyk7CisgICAgU3RyaW5nVmlldyB2aWV3ID0gc3RhdHVzTGluZTsKKyAgICBzaXplX3Qgc3BhY2VQ
b3MgPSB2aWV3LmZpbmQoJyAnKTsKICAgICAvLyBSZW1vdmUgc3RhdHVzIGNvZGUgZnJvbSB0aGUg
c3RhdHVzIGxpbmUuCi0gICAgc3BhY2VQb3MgPSBzdGF0dXNMaW5lLmZpbmQoJyAnLCBzcGFjZVBv
cyArIDEpOwotICAgIHJldHVybiBzdGF0dXNMaW5lLnN1YnN0cmluZyhzcGFjZVBvcyArIDEpOwor
ICAgIHNwYWNlUG9zID0gdmlldy5maW5kKCcgJywgc3BhY2VQb3MgKyAxKTsKKyAgICByZXR1cm4g
dmlldy5zdWJzdHJpbmcoc3BhY2VQb3MgKyAxKS50b0F0b21pY1N0cmluZygpOwogfQogCiBYRnJh
bWVPcHRpb25zRGlzcG9zaXRpb24gcGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCmluZGV4IDdlNThiM2QyNDk3YjI5ZmE5MGVlOWM4NWE2ZjkyZTBiZDE4YzVmNWMuLmExZGVm
YzkzMmUwZDBhODRlOTM2MDVjOWEwNmJhZmYzOTc4Y2VlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5n
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZXh0
cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOyAKIHZvaWQgZmluZENoYXJz
ZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFy
c2V0UG9zLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRMZW4sIHVuc2lnbmVkIGludCBzdGFydCA9IDAp
OwogWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCB1bnNpZ25lZCYgZmFpbHVy
ZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCk7Ci1TdHJpbmcgZXh0cmFjdFJlYXNvblBocmFz
ZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmKTsKK0F0b21pY1N0cmluZyBleHRyYWN0
UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYpOwogWEZyYW1lT3B0
aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlWEZyYW1lT3B0aW9uc0hlYWRlcihjb25zdCBTdHJpbmcmKTsK
IAogLy8gLTEgY291bGQgYmUgc2V0IHRvIG9uZSBvZiB0aGUgcmV0dXJuIHBhcmFtZXRlcnMgdG8g
aW5kaWNhdGUgdGhlIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNv
Y29hLm1tCmluZGV4IGE2MWQ2YjhlZWEwMjU1OGVkMDY2ZDliNGZlMDk4ZjA2NmJkNzkwNzMuLmE0
YmNiYjdhMGU2ZjcxNmIzYzYxNjZiOTZlMjFhZjAyOTAyNWQ3OWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNw
b25zZUNvY29hLm1tCkBAIC0zMyw3ICszMyw5IEBACiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9u
c2UuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8bGltaXRz
PgorI2ltcG9ydCA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE0NSwxOSArMTQ3LDYgQEAgTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgICAgIGluaXROU1VSTFJlc3BvbnNlKCk7
CiAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKIH0KLSAgICAKLXN0YXRpYyBOU1N0cmlu
ZyAqY29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQot
ewotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9IFtyZXNwb25zZSBfQ0ZVUkxSZXNw
b25zZV07Ci0gICAgaWYgKCFjZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
Q0ZIVFRQTWVzc2FnZVJlZiBjZkhUVFBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNw
b25zZShjZlJlc3BvbnNlKTsKLSAgICBpZiAoIWNmSFRUUE1lc3NhZ2UpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICByZXR1cm4gKE5TU3RyaW5nICopQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25z
ZVN0YXR1c0xpbmUoY2ZIVFRQTWVzc2FnZSk7Ci19CiAKIHN0YXRpYyB2b2lkIGFkZFRvSFRUUEhl
YWRlck1hcChjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBjb250ZXh0
KQogewpAQCAtMTY1LDY5ICsxNTQsNjQgQEAgc3RhdGljIHZvaWQgYWRkVG9IVFRQSGVhZGVyTWFw
KGNvbnN0IHZvaWQqIGtleSwgY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRleHQKICAgICBo
dHRwSGVhZGVyTWFwLT5zZXQoKENGU3RyaW5nUmVmKWtleSwgKENGU3RyaW5nUmVmKXZhbHVlKTsK
IH0KIAorc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdE
b3VibGVRdW90ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHZhbHVlLmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPCAyIHx8IHZhbHVlWzBdICE9ICciJyB8
fCB2YWx1ZVtsZW5ndGggLSAxXSAhPSAnIicpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKworICAg
IHJldHVybiBTdHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJpbmcoMSwgbGVuZ3RoIC0gMikudG9BdG9t
aWNTdHJpbmcoKTsKK30KKwogdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KEluaXRMZXZlbCBpbml0TGV2ZWwpCiB7CisgICAgQVNTRVJUKGluaXRMZXZlbCA+PSBDb21tb25G
aWVsZHNPbmx5KTsKKwogICAgIGlmIChtX2luaXRMZXZlbCA+PSBpbml0TGV2ZWwpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2lzTnVsbCB8fCAhbV9uc1Jlc3BvbnNlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgaWYgKG1faW5pdExldmVsIDwgQ29tbW9uRmllbGRzT25seSAmJiBp
bml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkgewotICAgICAgICBOU0F1dG9yZWxlYXNlUG9v
bCogcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAgIEF1dG9kcmFp
bmVkUG9vbCBwb29sOwogCi0gICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jbGVhcigpOwotICAg
ICAgICBtX3VybCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgVVJMXTsKLSAgICAgICAgbV9taW1lVHlw
ZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgTUlNRVR5cGVdOwotICAgICAgICBtX2V4cGVjdGVkQ29u
dGVudExlbmd0aCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXTsK
LSAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gW21fbnNSZXNwb25zZS5nZXQoKSB0ZXh0RW5j
b2RpbmdOYW1lXTsKLQotICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
ODc1NzA4OD4sIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBmaXhlZC4KLSAgICAgICAgdW5z
aWduZWQgdGV4dEVuY29kaW5nTmFtZUxlbmd0aCA9IG1fdGV4dEVuY29kaW5nTmFtZS5sZW5ndGgo
KTsKLSAgICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWVMZW5ndGggPj0gMiAmJiBtX3RleHRFbmNv
ZGluZ05hbWVbMFVdID09ICciJyAmJiBtX3RleHRFbmNvZGluZ05hbWVbdGV4dEVuY29kaW5nTmFt
ZUxlbmd0aCAtIDFdID09ICciJykKLSAgICAgICAgICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IG1f
dGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5zdWJzdHJpbmcoMSwgdGV4dEVuY29kaW5nTmFtZUxl
bmd0aCAtIDIpOwotCi0gICAgICAgIGlmIChbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xh
c3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIE5TSFRUUFVSTFJl
c3BvbnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2Uu
Z2V0KCk7Ci0KLSAgICAgICAgICAgIG1faHR0cFN0YXR1c0NvZGUgPSBbaHR0cFJlc3BvbnNlIHN0
YXR1c0NvZGVdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5pdExldmVsIDwgQWxs
RmllbGRzKSB7Ci0gICAgICAgICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBtZXNzYWdlUmVmID0g
Q0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbaHR0cFJlc3BvbnNlIF9DRlVSTFJlc3BvbnNl
XSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIFtOU1VSTFJlc3BvbnNlIGFs
bEhlYWRlckZpZWxkc10gdG8gbWluaW1pemUgY29weWluZyAoPHJkYXI6Ly9wcm9ibGVtLzI2Nzc4
ODYzPikuCi0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVy
cyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMobWVzc2FnZVJlZikp
OwotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgY29tbW9uSGVhZGVyIDogY29tbW9uSGVhZGVy
RmllbGRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQoaGVhZGVycy5n
ZXQoKSwgY29tbW9uSGVhZGVyLCAoY29uc3Qgdm9pZCAqKikmdmFsdWUpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChjb21tb25IZWFkZXIsIHZhbHVlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IDA7Ci0gICAgICAgIAotICAgICAgICBbcG9vbCBkcmFp
bl07Ci0gICAgfQorICAgIEFTU0VSVChtX2luaXRMZXZlbCA8IENvbW1vbkZpZWxkcyk7CisgICAg
bV91cmwgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIFVSTF07CisgICAgbV9taW1lVHlwZSA9IFttX25z
UmVzcG9uc2UuZ2V0KCkgTUlNRVR5cGVdOworICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0g
W21fbnNSZXNwb25zZS5nZXQoKSBleHBlY3RlZENvbnRlbnRMZW5ndGhdOworCisgICAgLy8gU3Ry
aXBwaW5nIGRvdWJsZSBxdW90ZXMgYXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
ODc1NzA4OD4sIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBmaXhlZC4KKyAgICBtX3RleHRF
bmNvZGluZ05hbWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJsZVF1b3RlKFttX25zUmVz
cG9uc2UuZ2V0KCkgdGV4dEVuY29kaW5nTmFtZV0pOwogCi0gICAgaWYgKG1faW5pdExldmVsIDwg
QWxsRmllbGRzICYmIGluaXRMZXZlbCA9PSBBbGxGaWVsZHMpIHsKLSAgICAgICAgaWYgKFttX25z
UmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkg
ewotICAgICAgICAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQ
b29sIGFsbG9jXSBpbml0XTsKKyAgICBpZiAoIVttX25zUmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZD
bGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgeworICAgICAgICBtX2h0dHBTdGF0dXND
b2RlID0gMDsKKyAgICAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CiAKLSAgICAgICAgICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2Ug
PSAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgICAgICBp
ZiAoUmV0YWluUHRyPE5TU3RyaW5nPiBodHRwU3RhdHVzTGluZSA9IGFkb3B0TlMoY29weU5TVVJM
UmVzcG9uc2VTdGF0dXNMaW5lKGh0dHBSZXNwb25zZSkpKQotICAgICAgICAgICAgICAgIG1faHR0
cFN0YXR1c1RleHQgPSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGh0dHBT
dGF0dXNMaW5lLmdldCgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2h0
dHBTdGF0dXNUZXh0ID0gQXRvbWljU3RyaW5nKCJPSyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpOworICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UgPSAoTlNI
VFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2UuZ2V0KCk7CisgICAgbV9odHRwU3RhdHVzQ29k
ZSA9IFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV07CiAKLSAgICAgICAgICAgIENGSFRUUE1lc3Nh
Z2VSZWYgbWVzc2FnZVJlZiA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0dHBSZXNw
b25zZSBfQ0ZVUkxSZXNwb25zZV0pOwotICAgICAgICAgICAgbV9odHRwVmVyc2lvbiA9IFN0cmlu
ZyhhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5VmVyc2lvbihtZXNzYWdlUmVmKSkuZ2V0KCkpLmNv
bnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisgICAgQ0ZIVFRQTWVzc2FnZVJlZiBtZXNzYWdlUmVm
ID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbaHR0cFJlc3BvbnNlIF9DRlVSTFJlc3Bv
bnNlXSk7CisgICAgLy8gQXZvaWQgY2FsbGluZyBbTlNVUkxSZXNwb25zZSBhbGxIZWFkZXJGaWVs
ZHNdIHRvIG1pbmltaXplIGNvcHlpbmcgKDxyZGFyOi8vcHJvYmxlbS8yNjc3ODg2Mz4pLgorICAg
IFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3Nh
Z2VDb3B5QWxsSGVhZGVyRmllbGRzKG1lc3NhZ2VSZWYpKTsKIAotICAgICAgICAgICAgLy8gQXZv
aWQgY2FsbGluZyBbTlNVUkxSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdIHRvIG1pbmltaXplIGNv
cHlpbmcgKDxyZGFyOi8vcHJvYmxlbS8yNjc3ODg2Mz4pLgotICAgICAgICAgICAgUmV0YWluUHRy
PENGRGljdGlvbmFyeVJlZj4gaGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxI
ZWFkZXJGaWVsZHMobWVzc2FnZVJlZikpOwotICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlG
dW5jdGlvbihoZWFkZXJzLmdldCgpLCBhZGRUb0hUVFBIZWFkZXJNYXAsICZtX2h0dHBIZWFkZXJG
aWVsZHMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBbcG9vbCBkcmFpbl07CisgICAgaWYg
KGluaXRMZXZlbCA8IEFsbEZpZWxkcykgeworICAgICAgICBmb3IgKGF1dG8mIGNvbW1vbkhlYWRl
ciA6IGNvbW1vbkhlYWRlckZpZWxkcykgeworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWU7
CisgICAgICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQoaGVhZGVycy5n
ZXQoKSwgY29tbW9uSGVhZGVyLCAoY29uc3Qgdm9pZCAqKikmdmFsdWUpKQorICAgICAgICAgICAg
ICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoY29tbW9uSGVhZGVyLCB2YWx1ZSk7CiAgICAgICAg
IH0KKyAgICB9IGVsc2UgeworICAgICAgICBBU1NFUlQobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMg
JiYgaW5pdExldmVsID09IEFsbEZpZWxkcyk7CisgICAgICAgIGlmIChSZXRhaW5QdHI8Q0ZTdHJp
bmdSZWY+IGh0dHBTdGF0dXNMaW5lID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weVJlc3BvbnNl
U3RhdHVzTGluZShtZXNzYWdlUmVmKSkpCisgICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0g
ZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShodHRwU3RhdHVzTGluZS5nZXQo
KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1faHR0cFN0YXR1c1RleHQgPSBBdG9taWNT
dHJpbmcoIk9LIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisKKyAgICAg
ICAgbV9odHRwVmVyc2lvbiA9IFN0cmluZyhhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5VmVyc2lv
bihtZXNzYWdlUmVmKSkuZ2V0KCkpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7CisgICAgICAg
IG1faHR0cEhlYWRlckZpZWxkcy5jbGVhcigpOworICAgICAgICBDRkRpY3Rpb25hcnlBcHBseUZ1
bmN0aW9uKGhlYWRlcnMuZ2V0KCksIGFkZFRvSFRUUEhlYWRlck1hcCwgJm1faHR0cEhlYWRlckZp
ZWxkcyk7CiAgICAgfQogCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281392</attachid>
            <date>2016-06-15 15:21:34 -0700</date>
            <delta_ts>2016-06-15 15:48:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615152134.patch</filename>
            <type>text/plain</type>
            <size>13502</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVlNzVhZjIyMjgyMTc5MjQ0OGNkZTBj
ZjRjNmNmYjBiNzlhYWZkZjQuLmE2YWE3MmUxM2ZhMDJhOWQ1MjM1ZDFlZWI1MzkyYzU4ODdjM2M1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRo
b2QgdG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAg
ICAgIGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRv
QXRvbWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxl
bkB5YW5kZXgucnU+CiAKICAgICAgICAgT25seSBNYWMgcG9ydCBuZWVkcyBPYmpDIEFQSSBmb3Ig
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTk4MDEyZGJmYzY2NmUxNmViZDFiM2E2Y2I0MmJjODZhOTlkZTUx
Mi4uMjA2ZTUxNTQyMzYxNjQ0NDJhMTg2YzAxZGRkMjdjNmJlY2NjZWIxZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ4IEBACisyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgLyBvcHRpbWl6ZSBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RSZWFzb25Q
aHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgSGF2ZSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKCkgcmV0dXJuIGFuIEF0b21pY1N0cmluZyBhcyB0aGUKKyAgICAgICAgUmVhc29uIGlz
IHN0b3JlZCBhcyBhbiBBdG9taWNTdHJpbmcgb24gUmVzb3VyY2VSZXNwb25zZS4gSGF2ZSB0aGUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24gdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0
b21pY1N0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlc3BvbnNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0RvdWJsZVF1b3RlKToKKyAgICAgICAgTW92ZSB0aGUgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdEb3VibGVRdW90ZSBsb2dpYyBmcm9tIHBsYXRmb3JtTGF6eUluaXQoKQorICAgICAgICB0byBp
dHMgb3duIGZ1bmN0aW9uLiBIYXZlIGl0IHVzZSBTdHJpbmdWaWV3OjpzdWJTdHJpbmcoKTo6dG9B
dG9taWNTdHJpbmcoKQorICAgICAgICB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IGF0b21pemluZyB0
aGUgdGV4dEVuY29kaW5nTmFtZSB0aGF0IGhhcyBzdXJyb3VuZGluZworICAgICAgICBkb3VibGUt
cXVvdGVzLgorCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxh
enlJbml0KToKKyAgICAgICAgLSBVc2UgQXV0b2RyYWluZWRQb29sIGluc3RlYWQgb2YgTlNBdXRv
cmVsZWFzZVBvb2wgZm9yIGNvbnZlbmllbmNlIGFuZCBoYXZlCisgICAgICAgICAgb25seSAxIHBv
b2wgaW5zdGVhZCBvZiAyLgorICAgICAgICAtIERyb3AgKG1faW5pdExldmVsIDwgQ29tbW9uRmll
bGRzT25seSAmJiBpbml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkKKyAgICAgICAgICBjaGVj
ayBoYXMgdGhpcyBpcyBhbHdheXMgdHJ1ZSBhbmQgcmVwbGFjZSB3aXRoIGFuIGFzc2VydGlvbi4g
V2UgbmV2ZXIKKyAgICAgICAgICBjYWxsIHBsYXRmb3JtTGF6eUluaXQoKSB3aXRoIGEgdmFsdWUg
bG93ZXIgdGhhbiBDb21tb25GaWVsZHNPbmx5LiBXZQorICAgICAgICAgIGFscmVhZHkgcmV0dXJu
IGVhcmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIGlmCisgICAgICAgICAgbV9p
bml0TGV2ZWwgPj0gaW5pdExldmVsLgorICAgICAgICAtIE1vdmUgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdEb3VibGVRdW90ZSgpIGxvZ2ljIG91dCBpbnRvIGl0cyBvd24gZnVuY3Rpb24KKyAgICAg
ICAgICBmb3IgY2xhcml0eS4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5IGNvcHlOU1VSTFJl
c3BvbnNlU3RhdHVzTGluZSgpIGZ1bmN0aW9uIGFuZCBjYWxsIGRpcmVjdGx5CisgICAgICAgICAg
Q0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoKSBzaW5jZSB3ZSBhbHJlYWR5IGhh
dmUgYQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgYXQgdGhlIGNhbGwgc2l0ZS4KKyAgICAg
ICAgLSBSZXR1cm4gZWFybHkgaWYgdGhlIHJlc3BvbnNlIGlmIG5vdCBvZiBOU0hUVFBVUkxSZXNw
b25zZSB0eXBlIHRvIHJlZHVjZQorICAgICAgICAgIGJyYW5jaGluZy4KKyAgICAgICAgLSBEcm9w
IHVubmVjZXNzYXJ5IChtX2luaXRMZXZlbCA8IEFsbEZpZWxkcykgY2hlY2sgYXMgd2Ugd291bGQg
aGF2ZSByZXR1cm5lZAorICAgICAgICAgIGVhcmx5IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1
bmN0aW9uIGlmIHRoaXMgd2VyZSB0aGUgY2FzZSB3aGVuIGNoZWNraW5nCisgICAgICAgICAgKG1f
aW5pdExldmVsID49IGluaXRMZXZlbCkuCisgICAgICAgIC0gQ2xlYXIgbV9odHRwSGVhZGVyRmll
bGRzIG9ubHkgaWYgaW5pdExldmVsIGlzIEFsbEZpZWxkcyBiZWNhdXNlIHRoZSBvbmx5CisgICAg
ICAgICAgY2FzZSB3ZSBoYXZlIGhlYWRlcnMgaW4gbV9odHRwSGVhZGVyRmllbGRzIGlzIGlmIHdl
IGRpZCBhIENvbW1vbkZpZWxkc09ubHkKKyAgICAgICAgICBpbml0aWFsaXphdGlvbiBpbiB0aGUg
cGFzdCBhbmQgd2UgYXJlIG5vdyBkb2luZyBhIEFsbEZpZWxkcyBpbml0aWFsaXphdGlvbi4KKwog
MjAxNi0wNi0xNSAgUm9tYWluIEJlbGxlc3NvcnQgIDxyb21haW4uYmVsbGVzc29ydEBjcmYuY2Fu
b24uZnI+CiAKICAgICAgICAgRW5hYmxpbmcgU2hhZG93IERPTSBmb3IgYWxsIHBsYXRmb3Jtcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA3MzllOTQ1NWI3YmI5ZGJhODhmMjJkMjRhNWVh
ZGUzMjZiYmE0ZWMzLi5kOGI4MzAzMWM2NGE1MzdmMmFjNjQ0ZDBiNmVmYzBiNmFlNjlkZDEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtODYsNiArODYsNyBAQCBwdWJsaWM6CiAKICAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICBTdHJpbmcgdG9TdHJpbmdXaXRob3V0Q29w
eWluZygpIGNvbnN0OworICAgIEF0b21pY1N0cmluZyB0b0F0b21pY1N0cmluZygpIGNvbnN0Owog
CiAjaWYgVVNFKENGKQogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29udmVydHMgbnVsbCBzdHJpbmdz
IHRvIGVtcHR5IHN0cmluZ3MuCkBAIC00NTEsNiArNDUyLDEzIEBAIGlubGluZSBTdHJpbmcgU3Ry
aW5nVmlldzo6dG9TdHJpbmcoKSBjb25zdAogICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVyczE2
KCksIGxlbmd0aCgpKTsKIH0KIAoraW5saW5lIEF0b21pY1N0cmluZyBTdHJpbmdWaWV3Ojp0b0F0
b21pY1N0cmluZygpIGNvbnN0Cit7CisgICAgaWYgKGlzOEJpdCgpKQorICAgICAgICByZXR1cm4g
QXRvbWljU3RyaW5nKGNoYXJhY3RlcnM4KCksIG1fbGVuZ3RoKTsKKyAgICByZXR1cm4gQXRvbWlj
U3RyaW5nKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7Cit9CisKIGlubGluZSBmbG9hdCBTdHJp
bmdWaWV3Ojp0b0Zsb2F0KGJvb2wmIGlzVmFsaWQpIGNvbnN0CiB7CiAgICAgaWYgKGlzOEJpdCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApp
bmRleCBmYWM4YWY2MjYwYzA1NTA1ZGEyNjlmODVjYmZiZjgwYjQ3MDNhNzFiLi40OGJhODlmMzAw
OTJkMDVjMjMzNWUzNDk3OTI3OTAwNGFmODYyYmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNDYxLDEyICs0NjEsMTMgQEAgQ29u
dGVudFR5cGVPcHRpb25zRGlzcG9zaXRpb24gcGFyc2VDb250ZW50VHlwZU9wdGlvbnNIZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIKIH0KICNlbmRpZgogCi1TdHJpbmcgZXh0cmFjdFJlYXNvblBo
cmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmIHN0YXR1c0xpbmUpCitBdG9taWNT
dHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcm
IHN0YXR1c0xpbmUpCiB7Ci0gICAgc2l6ZV90IHNwYWNlUG9zID0gc3RhdHVzTGluZS5maW5kKCcg
Jyk7CisgICAgU3RyaW5nVmlldyB2aWV3ID0gc3RhdHVzTGluZTsKKyAgICBzaXplX3Qgc3BhY2VQ
b3MgPSB2aWV3LmZpbmQoJyAnKTsKICAgICAvLyBSZW1vdmUgc3RhdHVzIGNvZGUgZnJvbSB0aGUg
c3RhdHVzIGxpbmUuCi0gICAgc3BhY2VQb3MgPSBzdGF0dXNMaW5lLmZpbmQoJyAnLCBzcGFjZVBv
cyArIDEpOwotICAgIHJldHVybiBzdGF0dXNMaW5lLnN1YnN0cmluZyhzcGFjZVBvcyArIDEpOwor
ICAgIHNwYWNlUG9zID0gdmlldy5maW5kKCcgJywgc3BhY2VQb3MgKyAxKTsKKyAgICByZXR1cm4g
dmlldy5zdWJzdHJpbmcoc3BhY2VQb3MgKyAxKS50b0F0b21pY1N0cmluZygpOwogfQogCiBYRnJh
bWVPcHRpb25zRGlzcG9zaXRpb24gcGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmlu
ZyYgaGVhZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9I
VFRQUGFyc2Vycy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vy
cy5oCmluZGV4IDdlNThiM2QyNDk3YjI5ZmE5MGVlOWM4NWE2ZjkyZTBiZDE4YzVmNWMuLmExZGVm
YzkzMmUwZDBhODRlOTM2MDVjOWEwNmJhZmYzOTc4Y2VlZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKQEAgLTc4LDcgKzc4LDcgQEAgU3RyaW5n
IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CiBTdHJpbmcgZXh0
cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnN0IFN0cmluZyYpOyAKIHZvaWQgZmluZENoYXJz
ZXRJbk1lZGlhVHlwZShjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgaW50JiBjaGFy
c2V0UG9zLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRMZW4sIHVuc2lnbmVkIGludCBzdGFydCA9IDAp
OwogWFNTUHJvdGVjdGlvbkRpc3Bvc2l0aW9uIHBhcnNlWFNTUHJvdGVjdGlvbkhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlciwgU3RyaW5nJiBmYWlsdXJlUmVhc29uLCB1bnNpZ25lZCYgZmFpbHVy
ZVBvc2l0aW9uLCBTdHJpbmcmIHJlcG9ydFVSTCk7Ci1TdHJpbmcgZXh0cmFjdFJlYXNvblBocmFz
ZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBTdHJpbmcmKTsKK0F0b21pY1N0cmluZyBleHRyYWN0
UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYpOwogWEZyYW1lT3B0
aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlWEZyYW1lT3B0aW9uc0hlYWRlcihjb25zdCBTdHJpbmcmKTsK
IAogLy8gLTEgY291bGQgYmUgc2V0IHRvIG9uZSBvZiB0aGUgcmV0dXJuIHBhcmFtZXRlcnMgdG8g
aW5kaWNhdGUgdGhlIHZhbHVlIGlzIG5vdCBzcGVjaWZpZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNv
Y29hLm1tCmluZGV4IGE2MWQ2YjhlZWEwMjU1OGVkMDY2ZDliNGZlMDk4ZjA2NmJkNzkwNzMuLmQ4
MzE5YWQ3YjZiNjVkYmUxZGY5OGMyZjZlZjViMTU5N2M2M2ZjYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNw
b25zZUNvY29hLm1tCkBAIC0zMyw3ICszMyw5IEBACiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9u
c2UuaCIKICNpbXBvcnQgPEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8bGltaXRz
PgorI2ltcG9ydCA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgogI2ltcG9ydCA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE0NSwxOSArMTQ3LDYgQEAgTlNVUkxSZXNwb25zZSAqUmVzb3VyY2VSZXNw
b25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgICAgIGluaXROU1VSTFJlc3BvbnNlKCk7
CiAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKIH0KLSAgICAKLXN0YXRpYyBOU1N0cmlu
ZyAqY29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKE5TVVJMUmVzcG9uc2UgKnJlc3BvbnNlKQot
ewotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9IFtyZXNwb25zZSBfQ0ZVUkxSZXNw
b25zZV07Ci0gICAgaWYgKCFjZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
Q0ZIVFRQTWVzc2FnZVJlZiBjZkhUVFBNZXNzYWdlID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNw
b25zZShjZlJlc3BvbnNlKTsKLSAgICBpZiAoIWNmSFRUUE1lc3NhZ2UpCi0gICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICByZXR1cm4gKE5TU3RyaW5nICopQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25z
ZVN0YXR1c0xpbmUoY2ZIVFRQTWVzc2FnZSk7Ci19CiAKIHN0YXRpYyB2b2lkIGFkZFRvSFRUUEhl
YWRlck1hcChjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBjb250ZXh0
KQogewpAQCAtMTY1LDY5ICsxNTQsNjQgQEAgc3RhdGljIHZvaWQgYWRkVG9IVFRQSGVhZGVyTWFw
KGNvbnN0IHZvaWQqIGtleSwgY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQqIGNvbnRleHQKICAgICBo
dHRwSGVhZGVyTWFwLT5zZXQoKENGU3RyaW5nUmVmKWtleSwgKENGU3RyaW5nUmVmKXZhbHVlKTsK
IH0KIAorc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdE
b3VibGVRdW90ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9
IHZhbHVlLmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPCAyIHx8IHZhbHVlWzBdICE9ICciJyB8
fCB2YWx1ZVtsZW5ndGggLSAxXSAhPSAnIicpCisgICAgICAgIHJldHVybiB2YWx1ZTsKKworICAg
IHJldHVybiBTdHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJpbmcoMSwgbGVuZ3RoIC0gMikudG9BdG9t
aWNTdHJpbmcoKTsKK30KKwogdm9pZCBSZXNvdXJjZVJlc3BvbnNlOjpwbGF0Zm9ybUxhenlJbml0
KEluaXRMZXZlbCBpbml0TGV2ZWwpCiB7CisgICAgQVNTRVJUKGluaXRMZXZlbCA+PSBDb21tb25G
aWVsZHNPbmx5KTsKKwogICAgIGlmIChtX2luaXRMZXZlbCA+PSBpbml0TGV2ZWwpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChtX2lzTnVsbCB8fCAhbV9uc1Jlc3BvbnNlKQogICAgICAgICBy
ZXR1cm47CiAgICAgCi0gICAgaWYgKG1faW5pdExldmVsIDwgQ29tbW9uRmllbGRzT25seSAmJiBp
bml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkgewotICAgICAgICBOU0F1dG9yZWxlYXNlUG9v
bCogcG9vbCA9IFtbTlNBdXRvcmVsZWFzZVBvb2wgYWxsb2NdIGluaXRdOworICAgIEF1dG9kcmFp
bmVkUG9vbCBwb29sOwogCi0gICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jbGVhcigpOwotICAg
ICAgICBtX3VybCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgVVJMXTsKLSAgICAgICAgbV9taW1lVHlw
ZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgTUlNRVR5cGVdOwotICAgICAgICBtX2V4cGVjdGVkQ29u
dGVudExlbmd0aCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXTsK
LSAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gW21fbnNSZXNwb25zZS5nZXQoKSB0ZXh0RW5j
b2RpbmdOYW1lXTsKLQotICAgICAgICAvLyBXb3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0v
ODc1NzA4OD4sIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBmaXhlZC4KLSAgICAgICAgdW5z
aWduZWQgdGV4dEVuY29kaW5nTmFtZUxlbmd0aCA9IG1fdGV4dEVuY29kaW5nTmFtZS5sZW5ndGgo
KTsKLSAgICAgICAgaWYgKHRleHRFbmNvZGluZ05hbWVMZW5ndGggPj0gMiAmJiBtX3RleHRFbmNv
ZGluZ05hbWVbMFVdID09ICciJyAmJiBtX3RleHRFbmNvZGluZ05hbWVbdGV4dEVuY29kaW5nTmFt
ZUxlbmd0aCAtIDFdID09ICciJykKLSAgICAgICAgICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IG1f
dGV4dEVuY29kaW5nTmFtZS5zdHJpbmcoKS5zdWJzdHJpbmcoMSwgdGV4dEVuY29kaW5nTmFtZUxl
bmd0aCAtIDIpOwotCi0gICAgICAgIGlmIChbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xh
c3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIE5TSFRUUFVSTFJl
c3BvbnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2Uu
Z2V0KCk7Ci0KLSAgICAgICAgICAgIG1faHR0cFN0YXR1c0NvZGUgPSBbaHR0cFJlc3BvbnNlIHN0
YXR1c0NvZGVdOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoaW5pdExldmVsIDwgQWxs
RmllbGRzKSB7Ci0gICAgICAgICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBtZXNzYWdlUmVmID0g
Q0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbaHR0cFJlc3BvbnNlIF9DRlVSTFJlc3BvbnNl
XSk7Ci0KLSAgICAgICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIFtOU1VSTFJlc3BvbnNlIGFs
bEhlYWRlckZpZWxkc10gdG8gbWluaW1pemUgY29weWluZyAoPHJkYXI6Ly9wcm9ibGVtLzI2Nzc4
ODYzPikuCi0gICAgICAgICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVy
cyA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMobWVzc2FnZVJlZikp
OwotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgY29tbW9uSGVhZGVyIDogY29tbW9uSGVhZGVy
RmllbGRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoQ0ZEaWN0aW9uYXJ5R2V0VmFsdWVJZlByZXNlbnQoaGVhZGVycy5n
ZXQoKSwgY29tbW9uSGVhZGVyLCAoY29uc3Qgdm9pZCAqKikmdmFsdWUpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9odHRwSGVhZGVyRmllbGRzLnNldChjb21tb25IZWFkZXIsIHZhbHVlKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IDA7Ci0gICAgICAgIAotICAgICAgICBbcG9vbCBkcmFp
bl07Ci0gICAgfQorICAgIEFTU0VSVChtX2luaXRMZXZlbCA8IENvbW1vbkZpZWxkc09ubHkpOwor
ICAgIG1fdXJsID0gW21fbnNSZXNwb25zZS5nZXQoKSBVUkxdOworICAgIG1fbWltZVR5cGUgPSBb
bV9uc1Jlc3BvbnNlLmdldCgpIE1JTUVUeXBlXTsKKyAgICBtX2V4cGVjdGVkQ29udGVudExlbmd0
aCA9IFttX25zUmVzcG9uc2UuZ2V0KCkgZXhwZWN0ZWRDb250ZW50TGVuZ3RoXTsKKworICAgIC8v
IFN0cmlwcGluZyBkb3VibGUgcXVvdGVzIGFzIGEgd29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9i
bGVtLzg3NTcwODg+LCBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoYXQgaXMgZml4ZWQuCisgICAgbV90
ZXh0RW5jb2RpbmdOYW1lID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdEb3VibGVRdW90ZShbbV9u
c1Jlc3BvbnNlLmdldCgpIHRleHRFbmNvZGluZ05hbWVdKTsKIAotICAgIGlmIChtX2luaXRMZXZl
bCA8IEFsbEZpZWxkcyAmJiBpbml0TGV2ZWwgPT0gQWxsRmllbGRzKSB7Ci0gICAgICAgIGlmIChb
bV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNz
XV0pIHsKLSAgICAgICAgICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxl
YXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgaWYgKCFbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2lu
ZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKKyAgICAgICAgbV9odHRwU3Rh
dHVzQ29kZSA9IDA7CisgICAgICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3Bv
bnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpOwotICAgICAgICAg
ICAgaWYgKFJldGFpblB0cjxOU1N0cmluZz4gaHR0cFN0YXR1c0xpbmUgPSBhZG9wdE5TKGNvcHlO
U1VSTFJlc3BvbnNlU3RhdHVzTGluZShodHRwUmVzcG9uc2UpKSkKLSAgICAgICAgICAgICAgICBt
X2h0dHBTdGF0dXNUZXh0ID0gZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZSho
dHRwU3RhdHVzTGluZS5nZXQoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
bV9odHRwU3RhdHVzVGV4dCA9IEF0b21pY1N0cmluZygiT0siLCBBdG9taWNTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKTsKKyAgICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0g
KE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpOworICAgIG1faHR0cFN0YXR1
c0NvZGUgPSBbaHR0cFJlc3BvbnNlIHN0YXR1c0NvZGVdOwogCi0gICAgICAgICAgICBDRkhUVFBN
ZXNzYWdlUmVmIG1lc3NhZ2VSZWYgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKFtodHRw
UmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKTsKLSAgICAgICAgICAgIG1faHR0cFZlcnNpb24gPSBT
dHJpbmcoYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weVZlcnNpb24obWVzc2FnZVJlZikpLmdldCgp
KS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOworICAgIENGSFRUUE1lc3NhZ2VSZWYgbWVzc2Fn
ZVJlZiA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxS
ZXNwb25zZV0pOworICAgIC8vIEF2b2lkIGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxsSGVhZGVy
RmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4NjM+KS4K
KyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBN
ZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7CiAKLSAgICAgICAgICAgIC8v
IEF2b2lkIGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSB0byBtaW5pbWl6
ZSBjb3B5aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4NjM+KS4KLSAgICAgICAgICAgIFJldGFp
blB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5
QWxsSGVhZGVyRmllbGRzKG1lc3NhZ2VSZWYpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeUFw
cGx5RnVuY3Rpb24oaGVhZGVycy5nZXQoKSwgYWRkVG9IVFRQSGVhZGVyTWFwLCAmbV9odHRwSGVh
ZGVyRmllbGRzKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgW3Bvb2wgZHJhaW5dOworICAg
IGlmIChpbml0TGV2ZWwgPCBBbGxGaWVsZHMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjb21tb25I
ZWFkZXIgOiBjb21tb25IZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIHZh
bHVlOworICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGhlYWRl
cnMuZ2V0KCksIGNvbW1vbkhlYWRlciwgKGNvbnN0IHZvaWQgKiopJnZhbHVlKSkKKyAgICAgICAg
ICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KGNvbW1vbkhlYWRlciwgdmFsdWUpOwogICAg
ICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgQVNTRVJUKG1faW5pdExldmVsIDwgQWxsRmll
bGRzICYmIGluaXRMZXZlbCA9PSBBbGxGaWVsZHMpOworICAgICAgICBpZiAoUmV0YWluUHRyPENG
U3RyaW5nUmVmPiBodHRwU3RhdHVzTGluZSA9IGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlSZXNw
b25zZVN0YXR1c0xpbmUobWVzc2FnZVJlZikpKQorICAgICAgICAgICAgbV9odHRwU3RhdHVzVGV4
dCA9IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0cFN0YXR1c0xpbmUu
Z2V0KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gQXRv
bWljU3RyaW5nKCJPSyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOworCisg
ICAgICAgIG1faHR0cFZlcnNpb24gPSBTdHJpbmcoYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weVZl
cnNpb24obWVzc2FnZVJlZikpLmdldCgpKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOworICAg
ICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY2xlYXIoKTsKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5QXBw
bHlGdW5jdGlvbihoZWFkZXJzLmdldCgpLCBhZGRUb0hUVFBIZWFkZXJNYXAsICZtX2h0dHBIZWFk
ZXJGaWVsZHMpOwogICAgIH0KIAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281403</attachid>
            <date>2016-06-15 16:58:12 -0700</date>
            <delta_ts>2016-06-15 17:16:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615165811.patch</filename>
            <type>text/plain</type>
            <size>13662</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVlNzVhZjIyMjgyMTc5MjQ0OGNkZTBj
ZjRjNmNmYjBiNzlhYWZkZjQuLmE2YWE3MmUxM2ZhMDJhOWQ1MjM1ZDFlZWI1MzkyYzU4ODdjM2M1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRo
b2QgdG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAg
ICAgIGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRv
QXRvbWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxl
bkB5YW5kZXgucnU+CiAKICAgICAgICAgT25seSBNYWMgcG9ydCBuZWVkcyBPYmpDIEFQSSBmb3Ig
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTk4MDEyZGJmYzY2NmUxNmViZDFiM2E2Y2I0MmJjODZhOTlkZTUx
Mi4uNzZiYTZmNzc5ZjAyZGIyN2JhZTY1MTRlY2Q1YmY1OTVkN2ZkMDA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ4IEBACisyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgLyBvcHRpbWl6ZSBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RSZWFzb25Q
aHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgSGF2ZSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKCkgcmV0dXJuIGFuIEF0b21pY1N0cmluZyBhcyB0aGUKKyAgICAgICAgUmVhc29uIGlz
IHN0b3JlZCBhcyBhbiBBdG9taWNTdHJpbmcgb24gUmVzb3VyY2VSZXNwb25zZS4gSGF2ZSB0aGUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24gdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0
b21pY1N0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlc3BvbnNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0RvdWJsZVF1b3RlKToKKyAgICAgICAgTW92ZSB0aGUgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdEb3VibGVRdW90ZSBsb2dpYyBmcm9tIHBsYXRmb3JtTGF6eUluaXQoKQorICAgICAgICB0byBp
dHMgb3duIGZ1bmN0aW9uLiBIYXZlIGl0IHVzZSBTdHJpbmdWaWV3OjpzdWJTdHJpbmcoKTo6dG9B
dG9taWNTdHJpbmcoKQorICAgICAgICB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IGF0b21pemluZyB0
aGUgdGV4dEVuY29kaW5nTmFtZSB0aGF0IGhhcyBzdXJyb3VuZGluZworICAgICAgICBkb3VibGUt
cXVvdGVzLgorCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplSFRUUEhlYWRlcnMpOgorICAg
ICAgICBNb3ZlIEhUVFAgaGVhZGVycyBpbml0aWFsaXphdGlvbiB0byBpdHMgb3duIGZ1bmN0aW9u
IGZvciBjbGFyaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0SFRUUFN0YXR1c1RleHQp
OgorICAgICAgICBNb3ZlIEhUVFAgc3RhdHVzIFRleHQgZXh0cmFjdGlvbiB0byBpdHMgb3duIGZ1
bmN0aW9uIGZvciBjbGFyaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgLSBUaGUgZnVuY3Rpb24gaXMgc3RyZWFtbGlu
ZWQgYSBiaXQgYmVjYXVzZSBtb3N0IG9mIHRoZSBsb2dpYyB3YXMgbW92ZWQKKyAgICAgICAgICBp
bnRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5IChpbml0
TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkgY2hlY2sgaW4gdGhlIGZpcnN0CisgICAgICAgICAg
aWYgY2FzZSBhbmQgcmVwbGFjZSB3aXRoIGFuIGFzc2VydGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBh
bHdheXMgY2FsbGVkCisgICAgICAgICAgd2l0aCBDb21tb25GaWVsZHNPbmx5IG9yIGFib3ZlIChB
bGxGaWVsZHMpLgorICAgICAgICAtIERyb3AgdW5uZWNlc3NhcnkgKG1faW5pdExldmVsIDwgQWxs
RmllbGRzKSBjaGVjayBpbiB0aGUgc2Vjb25kIGlmCisgICAgICAgICAgY2FzZSBhcyB0aGlzIGlz
IGFsd2F5cyB0cnVlLiBJZiBub3QsIHdlIHdvdWxkIGhhdmUgcmV0dXJuZWQgZWFybHkKKyAgICAg
ICAgICBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbiB3aGVuIGNoZWNraW5nCisgICAg
ICAgICAgbV9pbml0TGV2ZWwgPj0gaW5pdExldmVsLgorICAgICAgICAtIFVzZSBBdXRvZHJhaW5l
ZFBvb2wgaW5zdGVhZCBvZiBOU0F1dG9yZWxlYXNlUG9vbCBmb3IgY29udmVuaWVuY2UgYW5kIGhh
dmUKKyAgICAgICAgICBvbmx5IDEgcG9vbCBpbnN0ZWFkIG9mIDIuCisgICAgICAgIC0gRHJvcCB1
bm5lY2Vzc2FyeSBjb3B5TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUoKSBmdW5jdGlvbiBhbmQgY2Fs
bCBkaXJlY3RseQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VDb3B5UmVzcG9uc2VTdGF0dXNMaW5l
KCkgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIGEKKyAgICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGF0
IHRoZSBjYWxsIHNpdGUuCisKIDIwMTYtMDYtMTUgIFJvbWFpbiBCZWxsZXNzb3J0ICA8cm9tYWlu
LmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEVuYWJsaW5nIFNoYWRvdyBET00g
Zm9yIGFsbCBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNzM5ZTk0NTVi
N2JiOWRiYTg4ZjIyZDI0YTVlYWRlMzI2YmJhNGVjMy4uZDhiODMwMzFjNjRhNTM3ZjJhYzY0NGQw
YjZlZmMwYjZhZTY5ZGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTg2LDYgKzg2
LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdDsKKyAgICBBdG9taWNTdHJpbmcgdG9BdG9t
aWNTdHJpbmcoKSBjb25zdDsKIAogI2lmIFVTRShDRikKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNv
bnZlcnRzIG51bGwgc3RyaW5ncyB0byBlbXB0eSBzdHJpbmdzLgpAQCAtNDUxLDYgKzQ1MiwxMyBA
QCBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4g
U3RyaW5nKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7CiB9CiAKK2lubGluZSBBdG9taWNTdHJp
bmcgU3RyaW5nVmlldzo6dG9BdG9taWNTdHJpbmcoKSBjb25zdAoreworICAgIGlmIChpczhCaXQo
KSkKKyAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7
CisgICAgcmV0dXJuIEF0b21pY1N0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOworfQor
CiBpbmxpbmUgZmxvYXQgU3RyaW5nVmlldzo6dG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdAog
ewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggZmFjOGFmNjI2MGMwNTUwNWRhMjY5Zjg1Y2JmYmY4MGI0
NzAzYTcxYi4uNDhiYTg5ZjMwMDkyZDA1YzIzMzVlMzQ5NzkyNzkwMDRhZjg2MmJkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTQ2
MSwxMiArNDYxLDEzIEBAIENvbnRlbnRUeXBlT3B0aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlQ29udGVu
dFR5cGVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyCiB9CiAjZW5kaWYKIAotU3Ry
aW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJiBz
dGF0dXNMaW5lKQorQXRvbWljU3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1
c0xpbmUoY29uc3QgU3RyaW5nJiBzdGF0dXNMaW5lKQogewotICAgIHNpemVfdCBzcGFjZVBvcyA9
IHN0YXR1c0xpbmUuZmluZCgnICcpOworICAgIFN0cmluZ1ZpZXcgdmlldyA9IHN0YXR1c0xpbmU7
CisgICAgc2l6ZV90IHNwYWNlUG9zID0gdmlldy5maW5kKCcgJyk7CiAgICAgLy8gUmVtb3ZlIHN0
YXR1cyBjb2RlIGZyb20gdGhlIHN0YXR1cyBsaW5lLgotICAgIHNwYWNlUG9zID0gc3RhdHVzTGlu
ZS5maW5kKCcgJywgc3BhY2VQb3MgKyAxKTsKLSAgICByZXR1cm4gc3RhdHVzTGluZS5zdWJzdHJp
bmcoc3BhY2VQb3MgKyAxKTsKKyAgICBzcGFjZVBvcyA9IHZpZXcuZmluZCgnICcsIHNwYWNlUG9z
ICsgMSk7CisgICAgcmV0dXJuIHZpZXcuc3Vic3RyaW5nKHNwYWNlUG9zICsgMSkudG9BdG9taWNT
dHJpbmcoKTsKIH0KIAogWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlWEZyYW1lT3B0aW9u
c0hlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCA3ZTU4YjNkMjQ5N2IyOWZhOTBlZTljODVhNmY5
MmUwYmQxOGM1ZjVjLi5hMWRlZmM5MzJlMGQwYTg0ZTkzNjA1YzlhMDZiYWZmMzk3OGNlZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC03
OCw3ICs3OCw3IEBAIFN0cmluZyBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0
cmluZyYpOwogU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcm
KTsgCiB2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUs
IHVuc2lnbmVkIGludCYgY2hhcnNldFBvcywgdW5zaWduZWQgaW50JiBjaGFyc2V0TGVuLCB1bnNp
Z25lZCBpbnQgc3RhcnQgPSAwKTsKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1By
b3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNv
biwgdW5zaWduZWQmIGZhaWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwotU3RyaW5n
IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CitB
dG9taWNTdHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBT
dHJpbmcmKTsKIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZVhGcmFtZU9wdGlvbnNIZWFk
ZXIoY29uc3QgU3RyaW5nJik7CiAKIC8vIC0xIGNvdWxkIGJlIHNldCB0byBvbmUgb2YgdGhlIHJl
dHVybiBwYXJhbWV0ZXJzIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlc3BvbnNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQppbmRleCBhNjFkNmI4ZWVhMDI1NThlZDA2NmQ5YjRm
ZTA5OGYwNjZiZDc5MDczLi5kNDE1NGFmNGFmZDVmY2YwYWRlOGM5ZDZiMWVjOGM5MWQ3ZDMyMjdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVzcG9uc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQpAQCAtMzMsNyArMzMsOSBAQAogI2ltcG9y
dCAiV2ViQ29yZVVSTFJlc3BvbnNlLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KICNpbXBvcnQgPGxpbWl0cz4KKyNpbXBvcnQgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KICNp
bXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0xNDUsODkgKzE0Nyw4MCBAQCBOU1VSTFJl
c3BvbnNlICpSZXNvdXJjZVJlc3BvbnNlOjpuc1VSTFJlc3BvbnNlKCkgY29uc3QKICAgICAgICAg
aW5pdE5TVVJMUmVzcG9uc2UoKTsKICAgICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwogfQot
ICAgIAotc3RhdGljIE5TU3RyaW5nICpjb3B5TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUoTlNVUkxS
ZXNwb25zZSAqcmVzcG9uc2UpCisKK3N0YXRpYyB2b2lkIGFkZFRvSFRUUEhlYWRlck1hcChjb25z
dCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBjb250ZXh0KQogewotICAgIENG
VVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25zZSA9IFtyZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07Ci0g
ICAgaWYgKCFjZlJlc3BvbnNlKQotICAgICAgICByZXR1cm4gbmlsOworICAgIEhUVFBIZWFkZXJN
YXAqIGh0dHBIZWFkZXJNYXAgPSAoSFRUUEhlYWRlck1hcCopY29udGV4dDsKKyAgICBodHRwSGVh
ZGVyTWFwLT5zZXQoKENGU3RyaW5nUmVmKWtleSwgKENGU3RyaW5nUmVmKXZhbHVlKTsKK30KIAot
ICAgIENGSFRUUE1lc3NhZ2VSZWYgY2ZIVFRQTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQ
UmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0gICAgaWYgKCFjZkhUVFBNZXNzYWdlKQotICAgICAgICBy
ZXR1cm4gbmlsOworc3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJh
aWxpbmdEb3VibGVRdW90ZShjb25zdCBTdHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGxl
bmd0aCA9IHZhbHVlLmxlbmd0aCgpOworICAgIGlmIChsZW5ndGggPCAyIHx8IHZhbHVlWzBdICE9
ICciJyB8fCB2YWx1ZVtsZW5ndGggLSAxXSAhPSAnIicpCisgICAgICAgIHJldHVybiB2YWx1ZTsK
IAotICAgIHJldHVybiAoTlNTdHJpbmcgKilDRkhUVFBNZXNzYWdlQ29weVJlc3BvbnNlU3RhdHVz
TGluZShjZkhUVFBNZXNzYWdlKTsKKyAgICByZXR1cm4gU3RyaW5nVmlldyh2YWx1ZSkuc3Vic3Ry
aW5nKDEsIGxlbmd0aCAtIDIpLnRvQXRvbWljU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFk
ZFRvSFRUUEhlYWRlck1hcChjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lk
KiBjb250ZXh0KQorZW51bSBjbGFzcyBPbmx5Q29tbW9uSGVhZGVycyB7IE5vLCBZZXMgfTsKK3N0
YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplSFRUUEhlYWRlcnMoT25seUNvbW1vbkhlYWRlcnMg
b25seUNvbW1vbkhlYWRlcnMsIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UsIEhUVFBI
ZWFkZXJNYXAmIGhlYWRlcnNNYXApCiB7Ci0gICAgSFRUUEhlYWRlck1hcCogaHR0cEhlYWRlck1h
cCA9IChIVFRQSGVhZGVyTWFwKiljb250ZXh0OwotICAgIGh0dHBIZWFkZXJNYXAtPnNldCgoQ0ZT
dHJpbmdSZWYpa2V5LCAoQ0ZTdHJpbmdSZWYpdmFsdWUpOworICAgIGhlYWRlcnNNYXAuY2xlYXIo
KTsKKyAgICBDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2VSZWYgPSBDRlVSTFJlc3BvbnNlR2V0SFRU
UFJlc3BvbnNlKFtodHRwUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKTsKKworICAgIC8vIEF2b2lk
IGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5
aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4NjM+KS4KKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9u
YXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxk
cyhtZXNzYWdlUmVmKSk7CisgICAgaWYgKG9ubHlDb21tb25IZWFkZXJzID09IE9ubHlDb21tb25I
ZWFkZXJzOjpZZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjb21tb25IZWFkZXIgOiBjb21tb25I
ZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgICAgIENGU3RyaW5nUmVmIHZhbHVlOworICAgICAgICAg
ICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGhlYWRlcnMuZ2V0KCksIGNvbW1v
bkhlYWRlciwgKGNvbnN0IHZvaWQgKiopJnZhbHVlKSkKKyAgICAgICAgICAgICAgICBoZWFkZXJz
TWFwLnNldChjb21tb25IZWFkZXIsIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47
CisgICAgfQorICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24oaGVhZGVycy5nZXQoKSwgYWRk
VG9IVFRQSGVhZGVyTWFwLCAmaGVhZGVyc01hcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgQXRvbWlj
U3RyaW5nIGV4dHJhY3RIVFRQU3RhdHVzVGV4dChDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2VSZWYp
Cit7CisgICAgaWYgKGF1dG8gaHR0cFN0YXR1c0xpbmUgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VD
b3B5UmVzcG9uc2VTdGF0dXNMaW5lKG1lc3NhZ2VSZWYpKSkKKyAgICAgICAgcmV0dXJuIGV4dHJh
Y3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0cFN0YXR1c0xpbmUuZ2V0KCkpOwor
CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0cmluZz4gZGVmYXVsdFN0YXR1c1Rl
eHQoIk9LIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJu
IGRlZmF1bHRTdGF0dXNUZXh0OwogfQogCiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIHsKKyAgICBBU1NFUlQoaW5pdExldmVsID49
IENvbW1vbkZpZWxkc09ubHkpOworCiAgICAgaWYgKG1faW5pdExldmVsID49IGluaXRMZXZlbCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNOdWxsIHx8ICFtX25zUmVzcG9uc2UpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25GaWVsZHNP
bmx5ICYmIGluaXRMZXZlbCA+PSBDb21tb25GaWVsZHNPbmx5KSB7Ci0gICAgICAgIE5TQXV0b3Jl
bGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAg
QXV0b2RyYWluZWRQb29sIHBvb2w7CisKKyAgICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3Bv
bnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25z
ZSBjbGFzc11dID8gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpIDogbnVs
bHB0cjsKIAotICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuY2xlYXIoKTsKKyAgICBpZiAobV9p
bml0TGV2ZWwgPCBDb21tb25GaWVsZHNPbmx5KSB7CiAgICAgICAgIG1fdXJsID0gW21fbnNSZXNw
b25zZS5nZXQoKSBVUkxdOwogICAgICAgICBtX21pbWVUeXBlID0gW21fbnNSZXNwb25zZS5nZXQo
KSBNSU1FVHlwZV07CiAgICAgICAgIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gW21fbnNSZXNw
b25zZS5nZXQoKSBleHBlY3RlZENvbnRlbnRMZW5ndGhdOwotICAgICAgICBtX3RleHRFbmNvZGlu
Z05hbWUgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIHRleHRFbmNvZGluZ05hbWVdOwotCi0gICAgICAg
IC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS84NzU3MDg4PiwgY2FuIGJlIHJlbW92
ZWQgb25jZSB0aGF0IGlzIGZpeGVkLgotICAgICAgICB1bnNpZ25lZCB0ZXh0RW5jb2RpbmdOYW1l
TGVuZ3RoID0gbV90ZXh0RW5jb2RpbmdOYW1lLmxlbmd0aCgpOwotICAgICAgICBpZiAodGV4dEVu
Y29kaW5nTmFtZUxlbmd0aCA+PSAyICYmIG1fdGV4dEVuY29kaW5nTmFtZVswVV0gPT0gJyInICYm
IG1fdGV4dEVuY29kaW5nTmFtZVt0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoIC0gMV0gPT0gJyInKQot
ICAgICAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmlu
ZygpLnN1YnN0cmluZygxLCB0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoIC0gMik7Ci0KLSAgICAgICAg
aWYgKFttX25zUmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2Ug
Y2xhc3NdXSkgewotICAgICAgICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9
IChOU0hUVFBVUkxSZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKTsKLQotICAgICAgICAgICAg
bV9odHRwU3RhdHVzQ29kZSA9IFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV07Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIGlmIChpbml0TGV2ZWwgPCBBbGxGaWVsZHMpIHsKLSAgICAgICAgICAg
ICAgICBDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2VSZWYgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJl
c3BvbnNlKFtodHRwUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKTsKLQotICAgICAgICAgICAgICAg
IC8vIEF2b2lkIGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSB0byBtaW5p
bWl6ZSBjb3B5aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4NjM+KS4KLSAgICAgICAgICAgICAg
ICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNz
YWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7Ci0gICAgICAgICAgICAgICAgZm9y
IChhdXRvJiBjb21tb25IZWFkZXIgOiBjb21tb25IZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChDRkRp
Y3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChoZWFkZXJzLmdldCgpLCBjb21tb25IZWFkZXIsIChj
b25zdCB2b2lkICoqKSZ2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBtX2h0dHBIZWFk
ZXJGaWVsZHMuc2V0KGNvbW1vbkhlYWRlciwgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX2h0dHBTdGF0dXNDb2Rl
ID0gMDsKLSAgICAgICAgCi0gICAgICAgIFtwb29sIGRyYWluXTsKKyAgICAgICAgLy8gU3RyaXBw
aW5nIGRvdWJsZSBxdW90ZXMgYXMgYSB3b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vODc1
NzA4OD4sIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBmaXhlZC4KKyAgICAgICAgbV90ZXh0
RW5jb2RpbmdOYW1lID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdEb3VibGVRdW90ZShbbV9uc1Jl
c3BvbnNlLmdldCgpIHRleHRFbmNvZGluZ05hbWVdKTsKKyAgICAgICAgbV9odHRwU3RhdHVzQ29k
ZSA9IGh0dHBSZXNwb25zZSA/IFtodHRwUmVzcG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwogICAgIH0K
LQotICAgIGlmIChtX2luaXRMZXZlbCA8IEFsbEZpZWxkcyAmJiBpbml0TGV2ZWwgPT0gQWxsRmll
bGRzKSB7Ci0gICAgICAgIGlmIChbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05T
SFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIE5TQXV0b3JlbGVhc2VQb29s
KiBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgICAg
IE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKilt
X25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAoUmV0YWluUHRyPE5TU3RyaW5nPiBo
dHRwU3RhdHVzTGluZSA9IGFkb3B0TlMoY29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKGh0dHBS
ZXNwb25zZSkpKQotICAgICAgICAgICAgICAgIG1faHR0cFN0YXR1c1RleHQgPSBleHRyYWN0UmVh
c29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGh0dHBTdGF0dXNMaW5lLmdldCgpKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gQXRvbWljU3Ry
aW5nKCJPSyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotCisgICAgaWYg
KGh0dHBSZXNwb25zZSkgeworICAgICAgICBpZiAoaW5pdExldmVsID09IEFsbEZpZWxkcykgewog
ICAgICAgICAgICAgQ0ZIVFRQTWVzc2FnZVJlZiBtZXNzYWdlUmVmID0gQ0ZVUkxSZXNwb25zZUdl
dEhUVFBSZXNwb25zZShbaHR0cFJlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXSk7CisgICAgICAgICAg
ICBtX2h0dHBTdGF0dXNUZXh0ID0gZXh0cmFjdEhUVFBTdGF0dXNUZXh0KG1lc3NhZ2VSZWYpOwog
ICAgICAgICAgICAgbV9odHRwVmVyc2lvbiA9IFN0cmluZyhhZG9wdENGKENGSFRUUE1lc3NhZ2VD
b3B5VmVyc2lvbihtZXNzYWdlUmVmKSkuZ2V0KCkpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7
Ci0KLSAgICAgICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxsSGVhZGVy
RmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4NjM+KS4K
LSAgICAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9wdENG
KENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKG1lc3NhZ2VSZWYpKTsKLSAgICAgICAg
ICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rpb24oaGVhZGVycy5nZXQoKSwgYWRkVG9IVFRQSGVh
ZGVyTWFwLCAmbV9odHRwSGVhZGVyRmllbGRzKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
W3Bvb2wgZHJhaW5dOwotICAgICAgICB9CisgICAgICAgICAgICBpbml0aWFsaXplSFRUUEhlYWRl
cnMoT25seUNvbW1vbkhlYWRlcnM6Ok5vLCBodHRwUmVzcG9uc2UsIG1faHR0cEhlYWRlckZpZWxk
cyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW5pdGlhbGl6ZUhUVFBIZWFkZXJzKE9u
bHlDb21tb25IZWFkZXJzOjpZZXMsIGh0dHBSZXNwb25zZSwgbV9odHRwSGVhZGVyRmllbGRzKTsK
ICAgICB9CiAKICAgICBtX2luaXRMZXZlbCA9IGluaXRMZXZlbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281408</attachid>
            <date>2016-06-15 17:16:32 -0700</date>
            <delta_ts>2016-06-15 19:06:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615171632.patch</filename>
            <type>text/plain</type>
            <size>13695</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMDk5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVlNzVhZjIyMjgyMTc5MjQ0OGNkZTBj
ZjRjNmNmYjBiNzlhYWZkZjQuLmE2YWE3MmUxM2ZhMDJhOWQ1MjM1ZDFlZWI1MzkyYzU4ODdjM2M1
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRo
b2QgdG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAg
ICAgIGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRv
QXRvbWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgS29uc3RhbnRpbiBUb2thcmV2ICA8YW5udWxl
bkB5YW5kZXgucnU+CiAKICAgICAgICAgT25seSBNYWMgcG9ydCBuZWVkcyBPYmpDIEFQSSBmb3Ig
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMTk4MDEyZGJmYzY2NmUxNmViZDFiM2E2Y2I0MmJjODZhOTlkZTUx
Mi4uNzZiYTZmNzc5ZjAyZGIyN2JhZTY1MTRlY2Q1YmY1OTVkN2ZkMDA1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ4IEBACisyMDE2LTA2LTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5j
b20+CisKKyAgICAgICAgW0NvY29hXSBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9u
c2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4ODA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYW4gdXAgLyBvcHRpbWl6ZSBSZXNvdXJjZVJlc3Bv
bnNlOjpwbGF0Zm9ybUxhenlJbml0KEluaXRMZXZlbCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RSZWFzb25Q
aHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuaDoKKyAgICAgICAgSGF2ZSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKCkgcmV0dXJuIGFuIEF0b21pY1N0cmluZyBhcyB0aGUKKyAgICAgICAgUmVhc29uIGlz
IHN0b3JlZCBhcyBhbiBBdG9taWNTdHJpbmcgb24gUmVzb3VyY2VSZXNwb25zZS4gSGF2ZSB0aGUK
KyAgICAgICAgaW1wbGVtZW50YXRpb24gdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0
b21pY1N0cmluZygpLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlc3BvbnNlQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0RvdWJsZVF1b3RlKToKKyAgICAgICAgTW92ZSB0aGUgc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdEb3VibGVRdW90ZSBsb2dpYyBmcm9tIHBsYXRmb3JtTGF6eUluaXQoKQorICAgICAgICB0byBp
dHMgb3duIGZ1bmN0aW9uLiBIYXZlIGl0IHVzZSBTdHJpbmdWaWV3OjpzdWJTdHJpbmcoKTo6dG9B
dG9taWNTdHJpbmcoKQorICAgICAgICB0byBhdm9pZCB1bm5lY2Vzc2FyaWx5IGF0b21pemluZyB0
aGUgdGV4dEVuY29kaW5nTmFtZSB0aGF0IGhhcyBzdXJyb3VuZGluZworICAgICAgICBkb3VibGUt
cXVvdGVzLgorCisgICAgICAgIChXZWJDb3JlOjppbml0aWFsaXplSFRUUEhlYWRlcnMpOgorICAg
ICAgICBNb3ZlIEhUVFAgaGVhZGVycyBpbml0aWFsaXphdGlvbiB0byBpdHMgb3duIGZ1bmN0aW9u
IGZvciBjbGFyaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpleHRyYWN0SFRUUFN0YXR1c1RleHQp
OgorICAgICAgICBNb3ZlIEhUVFAgc3RhdHVzIFRleHQgZXh0cmFjdGlvbiB0byBpdHMgb3duIGZ1
bmN0aW9uIGZvciBjbGFyaXR5LgorCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
OjpwbGF0Zm9ybUxhenlJbml0KToKKyAgICAgICAgLSBUaGUgZnVuY3Rpb24gaXMgc3RyZWFtbGlu
ZWQgYSBiaXQgYmVjYXVzZSBtb3N0IG9mIHRoZSBsb2dpYyB3YXMgbW92ZWQKKyAgICAgICAgICBp
bnRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5IChpbml0
TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSkgY2hlY2sgaW4gdGhlIGZpcnN0CisgICAgICAgICAg
aWYgY2FzZSBhbmQgcmVwbGFjZSB3aXRoIGFuIGFzc2VydGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBh
bHdheXMgY2FsbGVkCisgICAgICAgICAgd2l0aCBDb21tb25GaWVsZHNPbmx5IG9yIGFib3ZlIChB
bGxGaWVsZHMpLgorICAgICAgICAtIERyb3AgdW5uZWNlc3NhcnkgKG1faW5pdExldmVsIDwgQWxs
RmllbGRzKSBjaGVjayBpbiB0aGUgc2Vjb25kIGlmCisgICAgICAgICAgY2FzZSBhcyB0aGlzIGlz
IGFsd2F5cyB0cnVlLiBJZiBub3QsIHdlIHdvdWxkIGhhdmUgcmV0dXJuZWQgZWFybHkKKyAgICAg
ICAgICBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbiB3aGVuIGNoZWNraW5nCisgICAg
ICAgICAgbV9pbml0TGV2ZWwgPj0gaW5pdExldmVsLgorICAgICAgICAtIFVzZSBBdXRvZHJhaW5l
ZFBvb2wgaW5zdGVhZCBvZiBOU0F1dG9yZWxlYXNlUG9vbCBmb3IgY29udmVuaWVuY2UgYW5kIGhh
dmUKKyAgICAgICAgICBvbmx5IDEgcG9vbCBpbnN0ZWFkIG9mIDIuCisgICAgICAgIC0gRHJvcCB1
bm5lY2Vzc2FyeSBjb3B5TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUoKSBmdW5jdGlvbiBhbmQgY2Fs
bCBkaXJlY3RseQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VDb3B5UmVzcG9uc2VTdGF0dXNMaW5l
KCkgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIGEKKyAgICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIGF0
IHRoZSBjYWxsIHNpdGUuCisKIDIwMTYtMDYtMTUgIFJvbWFpbiBCZWxsZXNzb3J0ICA8cm9tYWlu
LmJlbGxlc3NvcnRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIEVuYWJsaW5nIFNoYWRvdyBET00g
Zm9yIGFsbCBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKaW5kZXggNzM5ZTk0NTVi
N2JiOWRiYTg4ZjIyZDI0YTVlYWRlMzI2YmJhNGVjMy4uZDhiODMwMzFjNjRhNTM3ZjJhYzY0NGQw
YjZlZmMwYjZhZTY5ZGQxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdW
aWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTg2LDYgKzg2
LDcgQEAgcHVibGljOgogCiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSBjb25zdDsKKyAgICBBdG9taWNTdHJpbmcgdG9BdG9t
aWNTdHJpbmcoKSBjb25zdDsKIAogI2lmIFVTRShDRikKICAgICAvLyBUaGlzIGZ1bmN0aW9uIGNv
bnZlcnRzIG51bGwgc3RyaW5ncyB0byBlbXB0eSBzdHJpbmdzLgpAQCAtNDUxLDYgKzQ1MiwxMyBA
QCBpbmxpbmUgU3RyaW5nIFN0cmluZ1ZpZXc6OnRvU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4g
U3RyaW5nKGNoYXJhY3RlcnMxNigpLCBsZW5ndGgoKSk7CiB9CiAKK2lubGluZSBBdG9taWNTdHJp
bmcgU3RyaW5nVmlldzo6dG9BdG9taWNTdHJpbmcoKSBjb25zdAoreworICAgIGlmIChpczhCaXQo
KSkKKyAgICAgICAgcmV0dXJuIEF0b21pY1N0cmluZyhjaGFyYWN0ZXJzOCgpLCBtX2xlbmd0aCk7
CisgICAgcmV0dXJuIEF0b21pY1N0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOworfQor
CiBpbmxpbmUgZmxvYXQgU3RyaW5nVmlldzo6dG9GbG9hdChib29sJiBpc1ZhbGlkKSBjb25zdAog
ewogICAgIGlmIChpczhCaXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9IVFRQUGFyc2Vycy5jcHAKaW5kZXggZmFjOGFmNjI2MGMwNTUwNWRhMjY5Zjg1Y2JmYmY4MGI0
NzAzYTcxYi4uNDhiYTg5ZjMwMDkyZDA1YzIzMzVlMzQ5NzkyNzkwMDRhZjg2MmJkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTQ2
MSwxMiArNDYxLDEzIEBAIENvbnRlbnRUeXBlT3B0aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlQ29udGVu
dFR5cGVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyCiB9CiAjZW5kaWYKIAotU3Ry
aW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJiBz
dGF0dXNMaW5lKQorQXRvbWljU3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1
c0xpbmUoY29uc3QgU3RyaW5nJiBzdGF0dXNMaW5lKQogewotICAgIHNpemVfdCBzcGFjZVBvcyA9
IHN0YXR1c0xpbmUuZmluZCgnICcpOworICAgIFN0cmluZ1ZpZXcgdmlldyA9IHN0YXR1c0xpbmU7
CisgICAgc2l6ZV90IHNwYWNlUG9zID0gdmlldy5maW5kKCcgJyk7CiAgICAgLy8gUmVtb3ZlIHN0
YXR1cyBjb2RlIGZyb20gdGhlIHN0YXR1cyBsaW5lLgotICAgIHNwYWNlUG9zID0gc3RhdHVzTGlu
ZS5maW5kKCcgJywgc3BhY2VQb3MgKyAxKTsKLSAgICByZXR1cm4gc3RhdHVzTGluZS5zdWJzdHJp
bmcoc3BhY2VQb3MgKyAxKTsKKyAgICBzcGFjZVBvcyA9IHZpZXcuZmluZCgnICcsIHNwYWNlUG9z
ICsgMSk7CisgICAgcmV0dXJuIHZpZXcuc3Vic3RyaW5nKHNwYWNlUG9zICsgMSkudG9BdG9taWNT
dHJpbmcoKTsKIH0KIAogWEZyYW1lT3B0aW9uc0Rpc3Bvc2l0aW9uIHBhcnNlWEZyYW1lT3B0aW9u
c0hlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvSFRUUFBhcnNlcnMuaAppbmRleCA3ZTU4YjNkMjQ5N2IyOWZhOTBlZTljODVhNmY5
MmUwYmQxOGM1ZjVjLi5hMWRlZmM5MzJlMGQwYTg0ZTkzNjA1YzlhMDZiYWZmMzk3OGNlZWVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCkBAIC03
OCw3ICs3OCw3IEBAIFN0cmluZyBleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKGNvbnN0IFN0
cmluZyYpOwogU3RyaW5nIGV4dHJhY3RDaGFyc2V0RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcm
KTsgCiB2b2lkIGZpbmRDaGFyc2V0SW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUs
IHVuc2lnbmVkIGludCYgY2hhcnNldFBvcywgdW5zaWduZWQgaW50JiBjaGFyc2V0TGVuLCB1bnNp
Z25lZCBpbnQgc3RhcnQgPSAwKTsKIFhTU1Byb3RlY3Rpb25EaXNwb3NpdGlvbiBwYXJzZVhTU1By
b3RlY3Rpb25IZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIsIFN0cmluZyYgZmFpbHVyZVJlYXNv
biwgdW5zaWduZWQmIGZhaWx1cmVQb3NpdGlvbiwgU3RyaW5nJiByZXBvcnRVUkwpOwotU3RyaW5n
IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CitB
dG9taWNTdHJpbmcgZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShjb25zdCBT
dHJpbmcmKTsKIFhGcmFtZU9wdGlvbnNEaXNwb3NpdGlvbiBwYXJzZVhGcmFtZU9wdGlvbnNIZWFk
ZXIoY29uc3QgU3RyaW5nJik7CiAKIC8vIC0xIGNvdWxkIGJlIHNldCB0byBvbmUgb2YgdGhlIHJl
dHVybiBwYXJhbWV0ZXJzIHRvIGluZGljYXRlIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJj
ZVJlc3BvbnNlQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29h
L1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQppbmRleCBhNjFkNmI4ZWVhMDI1NThlZDA2NmQ5YjRm
ZTA5OGYwNjZiZDc5MDczLi44OWI3Y2Q4YTI5NGE1N2JjYmJjMDJhOGQ4MDEyYjg0Y2FlYTNlYzZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291
cmNlUmVzcG9uc2VDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NvY29hL1Jlc291cmNlUmVzcG9uc2VDb2NvYS5tbQpAQCAtMzMsNyArMzMsMTAgQEAKICNpbXBv
cnQgIldlYkNvcmVVUkxSZXNwb25zZS5oIgogI2ltcG9ydCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9u
Lmg+CiAjaW1wb3J0IDxsaW1pdHM+CisjaW1wb3J0IDx3dGYvQXV0b2RyYWluZWRQb29sLmg+Cisj
aW1wb3J0IDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ1ZpZXcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC0xNDUsODkgKzE0OCw4MCBAQCBOU1VSTFJlc3BvbnNlICpSZXNvdXJjZVJlc3BvbnNl
Ojpuc1VSTFJlc3BvbnNlKCkgY29uc3QKICAgICAgICAgaW5pdE5TVVJMUmVzcG9uc2UoKTsKICAg
ICByZXR1cm4gbV9uc1Jlc3BvbnNlLmdldCgpOwogfQotICAgIAotc3RhdGljIE5TU3RyaW5nICpj
b3B5TlNVUkxSZXNwb25zZVN0YXR1c0xpbmUoTlNVUkxSZXNwb25zZSAqcmVzcG9uc2UpCisKK3N0
YXRpYyB2b2lkIGFkZFRvSFRUUEhlYWRlck1hcChjb25zdCB2b2lkKiBrZXksIGNvbnN0IHZvaWQq
IHZhbHVlLCB2b2lkKiBjb250ZXh0KQogewotICAgIENGVVJMUmVzcG9uc2VSZWYgY2ZSZXNwb25z
ZSA9IFtyZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV07Ci0gICAgaWYgKCFjZlJlc3BvbnNlKQotICAg
ICAgICByZXR1cm4gbmlsOworICAgIEhUVFBIZWFkZXJNYXAqIGh0dHBIZWFkZXJNYXAgPSAoSFRU
UEhlYWRlck1hcCopY29udGV4dDsKKyAgICBodHRwSGVhZGVyTWFwLT5zZXQoKENGU3RyaW5nUmVm
KWtleSwgKENGU3RyaW5nUmVmKXZhbHVlKTsKK30KIAotICAgIENGSFRUUE1lc3NhZ2VSZWYgY2ZI
VFRQTWVzc2FnZSA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoY2ZSZXNwb25zZSk7Ci0g
ICAgaWYgKCFjZkhUVFBNZXNzYWdlKQotICAgICAgICByZXR1cm4gbmlsOworc3RhdGljIGlubGlu
ZSBBdG9taWNTdHJpbmcgc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdEb3VibGVRdW90ZShjb25zdCBT
dHJpbmcmIHZhbHVlKQoreworICAgIHVuc2lnbmVkIGxlbmd0aCA9IHZhbHVlLmxlbmd0aCgpOwor
ICAgIGlmIChsZW5ndGggPCAyIHx8IHZhbHVlWzBdICE9ICciJyB8fCB2YWx1ZVtsZW5ndGggLSAx
XSAhPSAnIicpCisgICAgICAgIHJldHVybiB2YWx1ZTsKIAotICAgIHJldHVybiAoTlNTdHJpbmcg
KilDRkhUVFBNZXNzYWdlQ29weVJlc3BvbnNlU3RhdHVzTGluZShjZkhUVFBNZXNzYWdlKTsKKyAg
ICByZXR1cm4gU3RyaW5nVmlldyh2YWx1ZSkuc3Vic3RyaW5nKDEsIGxlbmd0aCAtIDIpLnRvQXRv
bWljU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGFkZFRvSFRUUEhlYWRlck1hcChjb25zdCB2
b2lkKiBrZXksIGNvbnN0IHZvaWQqIHZhbHVlLCB2b2lkKiBjb250ZXh0KQorZW51bSBjbGFzcyBP
bmx5Q29tbW9uSGVhZGVycyB7IE5vLCBZZXMgfTsKK3N0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFs
aXplSFRUUEhlYWRlcnMoT25seUNvbW1vbkhlYWRlcnMgb25seUNvbW1vbkhlYWRlcnMsIE5TSFRU
UFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UsIEhUVFBIZWFkZXJNYXAmIGhlYWRlcnNNYXApCiB7
Ci0gICAgSFRUUEhlYWRlck1hcCogaHR0cEhlYWRlck1hcCA9IChIVFRQSGVhZGVyTWFwKiljb250
ZXh0OwotICAgIGh0dHBIZWFkZXJNYXAtPnNldCgoQ0ZTdHJpbmdSZWYpa2V5LCAoQ0ZTdHJpbmdS
ZWYpdmFsdWUpOworICAgIGhlYWRlcnNNYXAuY2xlYXIoKTsKKyAgICBDRkhUVFBNZXNzYWdlUmVm
IG1lc3NhZ2VSZWYgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKFtodHRwUmVzcG9uc2Ug
X0NGVVJMUmVzcG9uc2VdKTsKKworICAgIC8vIEF2b2lkIGNhbGxpbmcgW05TVVJMUmVzcG9uc2Ug
YWxsSGVhZGVyRmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3
Nzg4NjM+KS4KKyAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRD
RihDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7CisgICAgaWYg
KG9ubHlDb21tb25IZWFkZXJzID09IE9ubHlDb21tb25IZWFkZXJzOjpZZXMpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBjb21tb25IZWFkZXIgOiBjb21tb25IZWFkZXJGaWVsZHMpIHsKKyAgICAgICAg
ICAgIENGU3RyaW5nUmVmIHZhbHVlOworICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZh
bHVlSWZQcmVzZW50KGhlYWRlcnMuZ2V0KCksIGNvbW1vbkhlYWRlciwgKGNvbnN0IHZvaWQgKiop
JnZhbHVlKSkKKyAgICAgICAgICAgICAgICBoZWFkZXJzTWFwLnNldChjb21tb25IZWFkZXIsIHZh
bHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIENGRGljdGlvbmFy
eUFwcGx5RnVuY3Rpb24oaGVhZGVycy5nZXQoKSwgYWRkVG9IVFRQSGVhZGVyTWFwLCAmaGVhZGVy
c01hcCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIGV4dHJhY3RIVFRQU3RhdHVz
VGV4dChDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2VSZWYpCit7CisgICAgaWYgKGF1dG8gaHR0cFN0
YXR1c0xpbmUgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5UmVzcG9uc2VTdGF0dXNMaW5lKG1l
c3NhZ2VSZWYpKSkKKyAgICAgICAgcmV0dXJuIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0
YXR1c0xpbmUoaHR0cFN0YXR1c0xpbmUuZ2V0KCkpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPEF0b21pY1N0cmluZz4gZGVmYXVsdFN0YXR1c1RleHQoIk9LIiwgQXRvbWljU3RyaW5nOjpD
b25zdHJ1Y3RGcm9tTGl0ZXJhbCk7CisgICAgcmV0dXJuIGRlZmF1bHRTdGF0dXNUZXh0OwogfQog
CiB2b2lkIFJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRM
ZXZlbCkKIHsKKyAgICBBU1NFUlQoaW5pdExldmVsID49IENvbW1vbkZpZWxkc09ubHkpOworCiAg
ICAgaWYgKG1faW5pdExldmVsID49IGluaXRMZXZlbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1faXNOdWxsIHx8ICFtX25zUmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAg
ICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25GaWVsZHNPbmx5ICYmIGluaXRMZXZlbCA+PSBDb21t
b25GaWVsZHNPbmx5KSB7Ci0gICAgICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1
dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisK
KyAgICBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQo
KSBpc0tpbmRPZkNsYXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dID8gKE5TSFRUUFVSTFJl
c3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpIDogbnVsbHB0cjsKIAotICAgICAgICBtX2h0dHBI
ZWFkZXJGaWVsZHMuY2xlYXIoKTsKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25GaWVsZHNP
bmx5KSB7CiAgICAgICAgIG1fdXJsID0gW21fbnNSZXNwb25zZS5nZXQoKSBVUkxdOwogICAgICAg
ICBtX21pbWVUeXBlID0gW21fbnNSZXNwb25zZS5nZXQoKSBNSU1FVHlwZV07CiAgICAgICAgIG1f
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gW21fbnNSZXNwb25zZS5nZXQoKSBleHBlY3RlZENvbnRl
bnRMZW5ndGhdOwotICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBbbV9uc1Jlc3BvbnNlLmdl
dCgpIHRleHRFbmNvZGluZ05hbWVdOwotCi0gICAgICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFy
Oi8vcHJvYmxlbS84NzU3MDg4PiwgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGF0IGlzIGZpeGVkLgot
ICAgICAgICB1bnNpZ25lZCB0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoID0gbV90ZXh0RW5jb2RpbmdO
YW1lLmxlbmd0aCgpOwotICAgICAgICBpZiAodGV4dEVuY29kaW5nTmFtZUxlbmd0aCA+PSAyICYm
IG1fdGV4dEVuY29kaW5nTmFtZVswVV0gPT0gJyInICYmIG1fdGV4dEVuY29kaW5nTmFtZVt0ZXh0
RW5jb2RpbmdOYW1lTGVuZ3RoIC0gMV0gPT0gJyInKQotICAgICAgICAgICAgbV90ZXh0RW5jb2Rp
bmdOYW1lID0gbV90ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLnN1YnN0cmluZygxLCB0ZXh0RW5j
b2RpbmdOYW1lTGVuZ3RoIC0gMik7Ci0KLSAgICAgICAgaWYgKFttX25zUmVzcG9uc2UuZ2V0KCkg
aXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewotICAgICAgICAgICAg
TlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKW1f
bnNSZXNwb25zZS5nZXQoKTsKLQotICAgICAgICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IFtodHRw
UmVzcG9uc2Ugc3RhdHVzQ29kZV07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbml0
TGV2ZWwgPCBBbGxGaWVsZHMpIHsKLSAgICAgICAgICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIG1l
c3NhZ2VSZWYgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKFtodHRwUmVzcG9uc2UgX0NG
VVJMUmVzcG9uc2VdKTsKLQotICAgICAgICAgICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgW05TVVJM
UmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5aW5nICg8cmRhcjovL3By
b2JsZW0vMjY3Nzg4NjM+KS4KLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5
UmVmPiBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyht
ZXNzYWdlUmVmKSk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBjb21tb25IZWFkZXIgOiBj
b21tb25IZWFkZXJGaWVsZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFs
dWU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2Vu
dChoZWFkZXJzLmdldCgpLCBjb21tb25IZWFkZXIsIChjb25zdCB2b2lkICoqKSZ2YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KGNvbW1vbkhlYWRl
ciwgdmFsdWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX2h0dHBTdGF0dXNDb2RlID0gMDsKLSAgICAgICAgCi0gICAgICAg
IFtwb29sIGRyYWluXTsKKyAgICAgICAgLy8gU3RyaXBwaW5nIGRvdWJsZSBxdW90ZXMgYXMgYSB3
b3JrYXJvdW5kIGZvciA8cmRhcjovL3Byb2JsZW0vODc1NzA4OD4sIGNhbiBiZSByZW1vdmVkIG9u
Y2UgdGhhdCBpcyBmaXhlZC4KKyAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gc3RyaXBMZWFk
aW5nQW5kVHJhaWxpbmdEb3VibGVRdW90ZShbbV9uc1Jlc3BvbnNlLmdldCgpIHRleHRFbmNvZGlu
Z05hbWVdKTsKKyAgICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IGh0dHBSZXNwb25zZSA/IFtodHRw
UmVzcG9uc2Ugc3RhdHVzQ29kZV0gOiAwOwogICAgIH0KLQotICAgIGlmIChtX2luaXRMZXZlbCA8
IEFsbEZpZWxkcyAmJiBpbml0TGV2ZWwgPT0gQWxsRmllbGRzKSB7Ci0gICAgICAgIGlmIChbbV9u
c1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0p
IHsKLSAgICAgICAgICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxlYXNl
UG9vbCBhbGxvY10gaW5pdF07Ci0KLSAgICAgICAgICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRw
UmVzcG9uc2UgPSAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAg
ICAgICAgICBpZiAoUmV0YWluUHRyPE5TU3RyaW5nPiBodHRwU3RhdHVzTGluZSA9IGFkb3B0TlMo
Y29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKGh0dHBSZXNwb25zZSkpKQotICAgICAgICAgICAg
ICAgIG1faHR0cFN0YXR1c1RleHQgPSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNM
aW5lKGh0dHBTdGF0dXNMaW5lLmdldCgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gQXRvbWljU3RyaW5nKCJPSyIsIEF0b21pY1N0cmluZzo6
Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotCisgICAgaWYgKGh0dHBSZXNwb25zZSkgeworICAgICAg
ICBpZiAoaW5pdExldmVsID09IEFsbEZpZWxkcykgewogICAgICAgICAgICAgQ0ZIVFRQTWVzc2Fn
ZVJlZiBtZXNzYWdlUmVmID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbaHR0cFJlc3Bv
bnNlIF9DRlVSTFJlc3BvbnNlXSk7CisgICAgICAgICAgICBtX2h0dHBTdGF0dXNUZXh0ID0gZXh0
cmFjdEhUVFBTdGF0dXNUZXh0KG1lc3NhZ2VSZWYpOwogICAgICAgICAgICAgbV9odHRwVmVyc2lv
biA9IFN0cmluZyhhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5VmVyc2lvbihtZXNzYWdlUmVmKSku
Z2V0KCkpLmNvbnZlcnRUb0FTQ0lJVXBwZXJjYXNlKCk7Ci0KLSAgICAgICAgICAgIC8vIEF2b2lk
IGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxsSGVhZGVyRmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5
aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4NjM+KS4KLSAgICAgICAgICAgIFJldGFpblB0cjxD
RkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVh
ZGVyRmllbGRzKG1lc3NhZ2VSZWYpKTsKLSAgICAgICAgICAgIENGRGljdGlvbmFyeUFwcGx5RnVu
Y3Rpb24oaGVhZGVycy5nZXQoKSwgYWRkVG9IVFRQSGVhZGVyTWFwLCAmbV9odHRwSGVhZGVyRmll
bGRzKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgW3Bvb2wgZHJhaW5dOwotICAgICAgICB9
CisgICAgICAgICAgICBpbml0aWFsaXplSFRUUEhlYWRlcnMoT25seUNvbW1vbkhlYWRlcnM6Ok5v
LCBodHRwUmVzcG9uc2UsIG1faHR0cEhlYWRlckZpZWxkcyk7CisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgaW5pdGlhbGl6ZUhUVFBIZWFkZXJzKE9ubHlDb21tb25IZWFkZXJzOjpZZXMsIGh0
dHBSZXNwb25zZSwgbV9odHRwSGVhZGVyRmllbGRzKTsKICAgICB9CiAKICAgICBtX2luaXRMZXZl
bCA9IGluaXRMZXZlbDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281424</attachid>
            <date>2016-06-15 19:06:21 -0700</date>
            <delta_ts>2016-06-15 19:28:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615190620.patch</filename>
            <type>text/plain</type>
            <size>13768</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0NmIyODcxNDI3ZWY1MmUxYjRjYjRk
MDE2NTRmMjcwZWI5NGZmMjkuLmM2ZmY0NGI1NTc5ZjFjNTgzNThjOGU3OGMwMDJlMzI4YjJlZTYy
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRob2Qg
dG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAgICAg
IGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRvQXRv
bWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcHJvdmUgSGFzaE1hcCBhbmQgSGFzaFNldCBzdXBwb3J0IGZvciBSZWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhNWM4NTgxN2U3YjczODlmYzJkZWY1MWRhM2U2ZGJhMjc3YzMzMzhkLi4xODdl
MTk2YzllNGVjMTA4NTczNmY4ODg3NzM5MWYxYTkyZDY1NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoSW5pdExldmVsKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFJlYXNvblBocmFzZUZyb21I
VFRQU3RhdHVzTGluZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5o
OgorICAgICAgICBIYXZlIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoKSBy
ZXR1cm4gYW4gQXRvbWljU3RyaW5nIGFzIHRoZQorICAgICAgICBSZWFzb24gaXMgc3RvcmVkIGFz
IGFuIEF0b21pY1N0cmluZyBvbiBSZXNvdXJjZVJlc3BvbnNlLiBIYXZlIHRoZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiB1c2UgU3RyaW5nVmlldzo6c3ViU3RyaW5nKCk6OnRvQXRvbWljU3RyaW5n
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nRG91Ymxl
UXVvdGUpOgorICAgICAgICBNb3ZlIHRoZSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJsZVF1
b3RlIGxvZ2ljIGZyb20gcGxhdGZvcm1MYXp5SW5pdCgpCisgICAgICAgIHRvIGl0cyBvd24gZnVu
Y3Rpb24uIEhhdmUgaXQgdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0b21pY1N0cmlu
ZygpCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgYXRvbWl6aW5nIHRoZSB0ZXh0RW5j
b2RpbmdOYW1lIHRoYXQgaGFzIHN1cnJvdW5kaW5nCisgICAgICAgIGRvdWJsZS1xdW90ZXMuCisK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVIVFRQSGVhZGVycyk6CisgICAgICAgIE1vdmUg
SFRUUCBoZWFkZXJzIGluaXRpYWxpemF0aW9uIHRvIGl0cyBvd24gZnVuY3Rpb24gZm9yIGNsYXJp
dHkuCisKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RIVFRQU3RhdHVzVGV4dCk6CisgICAgICAg
IE1vdmUgSFRUUCBzdGF0dXMgVGV4dCBleHRyYWN0aW9uIHRvIGl0cyBvd24gZnVuY3Rpb24gZm9y
IGNsYXJpdHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAtIFRoZSBmdW5jdGlvbiBpcyBzdHJlYW1saW5lZCBhIGJpdCBi
ZWNhdXNlIG1vc3Qgb2YgdGhlIGxvZ2ljIHdhcyBtb3ZlZAorICAgICAgICAgIGludG8gc2VwYXJh
dGUgZnVuY3Rpb25zLgorICAgICAgICAtIERyb3AgdW5uZWNlc3NhcnkgKGluaXRMZXZlbCA+PSBD
b21tb25GaWVsZHNPbmx5KSBjaGVjayBpbiB0aGUgZmlyc3QKKyAgICAgICAgICBpZiBjYXNlIGFu
ZCByZXBsYWNlIHdpdGggYW4gYXNzZXJ0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxs
ZWQKKyAgICAgICAgICB3aXRoIENvbW1vbkZpZWxkc09ubHkgb3IgYWJvdmUgKEFsbEZpZWxkcyku
CisgICAgICAgIC0gRHJvcCB1bm5lY2Vzc2FyeSAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMpIGNo
ZWNrIGluIHRoZSBzZWNvbmQgaWYKKyAgICAgICAgICBjYXNlIGFzIHRoaXMgaXMgYWx3YXlzIHRy
dWUuIElmIG5vdCwgd2Ugd291bGQgaGF2ZSByZXR1cm5lZCBlYXJseQorICAgICAgICAgIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIHdoZW4gY2hlY2tpbmcKKyAgICAgICAgICBtX2lu
aXRMZXZlbCA+PSBpbml0TGV2ZWwuCisgICAgICAgIC0gVXNlIEF1dG9kcmFpbmVkUG9vbCBpbnN0
ZWFkIG9mIE5TQXV0b3JlbGVhc2VQb29sIGZvciBjb252ZW5pZW5jZSBhbmQgaGF2ZQorICAgICAg
ICAgIG9ubHkgMSBwb29sIGluc3RlYWQgb2YgMi4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5
IGNvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSgpIGZ1bmN0aW9uIGFuZCBjYWxsIGRpcmVjdGx5
CisgICAgICAgICAgQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoKSBzaW5jZSB3
ZSBhbHJlYWR5IGhhdmUgYQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgYXQgdGhlIGNhbGwg
c2l0ZS4KKwogMjAxNi0wNi0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICA8YXR0YWNobWVudD4gZWxlbWVudHMganVtcCBhcm91bmQgYSBsb3QgYXJv
dW5kIHdoZW4gc3VidGl0bGUgdGV4dCBjaGFuZ2VzIHNsaWdodGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDczOWU5NDU1YjdiYjlkYmE4OGYyMmQyNGE1ZWFkZTMyNmJiYTRlYzMuLmQ4
YjgzMDMxYzY0YTUzN2YyYWM2NDRkMGI2ZWZjMGI2YWU2OWRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5oCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3Q7Cisg
ICAgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKCkgY29uc3Q7CiAKICNpZiBVU0UoQ0YpCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBudWxsIHN0cmluZ3MgdG8gZW1wdHkgc3RyaW5n
cy4KQEAgLTQ1MSw2ICs0NTIsMTMgQEAgaW5saW5lIFN0cmluZyBTdHJpbmdWaWV3Ojp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOwog
fQogCitpbmxpbmUgQXRvbWljU3RyaW5nIFN0cmluZ1ZpZXc6OnRvQXRvbWljU3RyaW5nKCkgY29u
c3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgpOworICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hhcmFjdGVy
czE2KCksIGxlbmd0aCgpKTsKK30KKwogaW5saW5lIGZsb2F0IFN0cmluZ1ZpZXc6OnRvRmxvYXQo
Ym9vbCYgaXNWYWxpZCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZhYzhhZjYyNjBj
MDU1MDVkYTI2OWY4NWNiZmJmODBiNDcwM2E3MWIuLjQ4YmE4OWYzMDA5MmQwNWMyMzM1ZTM0OTc5
Mjc5MDA0YWY4NjJiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC00NjEsMTIgKzQ2MSwxMyBAQCBDb250ZW50VHlwZU9wdGlvbnNE
aXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlcgogfQogI2VuZGlmCiAKLVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKK0F0b21pY1N0cmluZyBleHRyYWN0UmVh
c29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKIHsK
LSAgICBzaXplX3Qgc3BhY2VQb3MgPSBzdGF0dXNMaW5lLmZpbmQoJyAnKTsKKyAgICBTdHJpbmdW
aWV3IHZpZXcgPSBzdGF0dXNMaW5lOworICAgIHNpemVfdCBzcGFjZVBvcyA9IHZpZXcuZmluZCgn
ICcpOwogICAgIC8vIFJlbW92ZSBzdGF0dXMgY29kZSBmcm9tIHRoZSBzdGF0dXMgbGluZS4KLSAg
ICBzcGFjZVBvcyA9IHN0YXR1c0xpbmUuZmluZCgnICcsIHNwYWNlUG9zICsgMSk7Ci0gICAgcmV0
dXJuIHN0YXR1c0xpbmUuc3Vic3RyaW5nKHNwYWNlUG9zICsgMSk7CisgICAgc3BhY2VQb3MgPSB2
aWV3LmZpbmQoJyAnLCBzcGFjZVBvcyArIDEpOworICAgIHJldHVybiB2aWV3LnN1YnN0cmluZyhz
cGFjZVBvcyArIDEpLnRvQXRvbWljU3RyaW5nKCk7CiB9CiAKIFhGcmFtZU9wdGlvbnNEaXNwb3Np
dGlvbiBwYXJzZVhGcmFtZU9wdGlvbnNIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggN2U1OGIz
ZDI0OTdiMjlmYTkwZWU5Yzg1YTZmOTJlMGJkMThjNWY1Yy4uYTFkZWZjOTMyZTBkMGE4NGU5MzYw
NWM5YTA2YmFmZjM5NzhjZWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuaApAQCAtNzgsNyArNzgsNyBAQCBTdHJpbmcgZXh0cmFjdE1JTUVUeXBl
RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7IAogdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVk
IGludCYgY2hhcnNldExlbiwgdW5zaWduZWQgaW50IHN0YXJ0ID0gMCk7CiBYU1NQcm90ZWN0aW9u
RGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVy
LCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmlu
ZyYgcmVwb3J0VVJMKTsKLVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNM
aW5lKGNvbnN0IFN0cmluZyYpOworQXRvbWljU3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9t
SFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CiBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb24g
cGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAvLyAtMSBjb3VsZCBi
ZSBzZXQgdG8gb25lIG9mIHRoZSByZXR1cm4gcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB0aGUgdmFs
dWUgaXMgbm90IHNwZWNpZmllZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KaW5kZXggYTYx
ZDZiOGVlYTAyNTU4ZWQwNjZkOWI0ZmUwOThmMDY2YmQ3OTA3My4uNzMwZDY4NjJhYmYwNGZiNDFl
MzE5MDVhODU2MjhiOGUyM2ZkOTI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KQEAg
LTMzLDcgKzMzLDEwIEBACiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8bGltaXRzPgorI2ltcG9ydCA8d3Rm
L0F1dG9kcmFpbmVkUG9vbC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ1LDg5ICsxNDgsODAgQEAgTlNVUkxSZXNw
b25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgICAgIGlu
aXROU1VSTFJlc3BvbnNlKCk7CiAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKIH0KLSAg
ICAKLXN0YXRpYyBOU1N0cmluZyAqY29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKQorCitzdGF0aWMgdm9pZCBhZGRUb0hUVFBIZWFkZXJNYXAoY29uc3Qg
dm9pZCoga2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBbcmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotICAg
IGlmICghY2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBIVFRQSGVhZGVyTWFw
KiBodHRwSGVhZGVyTWFwID0gKEhUVFBIZWFkZXJNYXAqKWNvbnRleHQ7CisgICAgaHR0cEhlYWRl
ck1hcC0+c2V0KChDRlN0cmluZ1JlZilrZXksIChDRlN0cmluZ1JlZil2YWx1ZSk7Cit9CiAKLSAg
ICBDRkhUVFBNZXNzYWdlUmVmIGNmSFRUUE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJl
c3BvbnNlKGNmUmVzcG9uc2UpOwotICAgIGlmICghY2ZIVFRQTWVzc2FnZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKK3N0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nRG91YmxlUXVvdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoIDwgMiB8fCB2YWx1ZVswXSAhPSAn
IicgfHwgdmFsdWVbbGVuZ3RoIC0gMV0gIT0gJyInKQorICAgICAgICByZXR1cm4gdmFsdWU7CiAK
LSAgICByZXR1cm4gKE5TU3RyaW5nICopQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xp
bmUoY2ZIVFRQTWVzc2FnZSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcodmFsdWUpLnN1YnN0cmlu
ZygxLCBsZW5ndGggLSAyKS50b0F0b21pY1N0cmluZygpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRU
b0hUVFBIZWFkZXJNYXAoY29uc3Qgdm9pZCoga2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCog
Y29udGV4dCkKK2VudW0gY2xhc3MgT25seUNvbW1vbkhlYWRlcnMgeyBObywgWWVzIH07CitzdGF0
aWMgaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhUVFBIZWFkZXJzKE9ubHlDb21tb25IZWFkZXJzIG9u
bHlDb21tb25IZWFkZXJzLCBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzTWFwKQogewotICAgIEhUVFBIZWFkZXJNYXAqIGh0dHBIZWFkZXJNYXAg
PSAoSFRUUEhlYWRlck1hcCopY29udGV4dDsKLSAgICBodHRwSGVhZGVyTWFwLT5zZXQoKENGU3Ry
aW5nUmVmKWtleSwgKENGU3RyaW5nUmVmKXZhbHVlKTsKKyAgICBoZWFkZXJzTWFwLmNsZWFyKCk7
CisgICAgYXV0byBtZXNzYWdlUmVmID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbaHR0
cFJlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXSk7CisKKyAgICAvLyBBdm9pZCBjYWxsaW5nIFtOU1VS
TFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc10gdG8gbWluaW1pemUgY29weWluZyAoPHJkYXI6Ly9w
cm9ibGVtLzI2Nzc4ODYzPikuCisgICAgYXV0byBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNz
YWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7CisgICAgaWYgKG9ubHlDb21tb25I
ZWFkZXJzID09IE9ubHlDb21tb25IZWFkZXJzOjpZZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBj
b21tb25IZWFkZXIgOiBjb21tb25IZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgICAgIHZvaWQqIHZh
bHVlOworICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGhlYWRl
cnMuZ2V0KCksIGNvbW1vbkhlYWRlciwgJnZhbHVlKSkKKyAgICAgICAgICAgICAgICBoZWFkZXJz
TWFwLnNldChjb21tb25IZWFkZXIsIChDRlN0cmluZ1JlZikgdmFsdWUpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlvbihoZWFk
ZXJzLmdldCgpLCBhZGRUb0hUVFBIZWFkZXJNYXAsICZoZWFkZXJzTWFwKTsKK30KKworc3RhdGlj
IGlubGluZSBBdG9taWNTdHJpbmcgZXh0cmFjdEhUVFBTdGF0dXNUZXh0KENGSFRUUE1lc3NhZ2VS
ZWYgbWVzc2FnZVJlZikKK3sKKyAgICBpZiAoYXV0byBodHRwU3RhdHVzTGluZSA9IGFkb3B0Q0Yo
Q0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUobWVzc2FnZVJlZikpKQorICAgICAg
ICByZXR1cm4gZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShodHRwU3RhdHVz
TGluZS5nZXQoKSk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3RyaW5nPiBk
ZWZhdWx0U3RhdHVzVGV4dCgiT0siLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KTsKKyAgICByZXR1cm4gZGVmYXVsdFN0YXR1c1RleHQ7CiB9CiAKIHZvaWQgUmVzb3VyY2VSZXNw
b25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogeworICAgIEFTU0VS
VChpbml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSk7CisKICAgICBpZiAobV9pbml0TGV2ZWwg
Pj0gaW5pdExldmVsKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc051bGwgfHwgIW1f
bnNSZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChtX2luaXRMZXZlbCA8
IENvbW1vbkZpZWxkc09ubHkgJiYgaW5pdExldmVsID49IENvbW1vbkZpZWxkc09ubHkpIHsKLSAg
ICAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9j
XSBpbml0XTsKKyAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKworICAgIE5TSFRUUFVSTFJlc3Bv
bnNlICpodHRwUmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xhc3M6W05T
SFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0gPyAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9u
c2UuZ2V0KCkgOiBudWxscHRyOwogCi0gICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5jbGVhcigp
OworICAgIGlmIChtX2luaXRMZXZlbCA8IENvbW1vbkZpZWxkc09ubHkpIHsKICAgICAgICAgbV91
cmwgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIFVSTF07CiAgICAgICAgIG1fbWltZVR5cGUgPSBbbV9u
c1Jlc3BvbnNlLmdldCgpIE1JTUVUeXBlXTsKICAgICAgICAgbV9leHBlY3RlZENvbnRlbnRMZW5n
dGggPSBbbV9uc1Jlc3BvbnNlLmdldCgpIGV4cGVjdGVkQ29udGVudExlbmd0aF07Ci0gICAgICAg
IG1fdGV4dEVuY29kaW5nTmFtZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgdGV4dEVuY29kaW5nTmFt
ZV07Ci0KLSAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzg3NTcwODg+
LCBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoYXQgaXMgZml4ZWQuCi0gICAgICAgIHVuc2lnbmVkIHRl
eHRFbmNvZGluZ05hbWVMZW5ndGggPSBtX3RleHRFbmNvZGluZ05hbWUubGVuZ3RoKCk7Ci0gICAg
ICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoID49IDIgJiYgbV90ZXh0RW5jb2RpbmdOYW1l
WzBVXSA9PSAnIicgJiYgbV90ZXh0RW5jb2RpbmdOYW1lW3RleHRFbmNvZGluZ05hbWVMZW5ndGgg
LSAxXSA9PSAnIicpCi0gICAgICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBtX3RleHRFbmNv
ZGluZ05hbWUuc3RyaW5nKCkuc3Vic3RyaW5nKDEsIHRleHRFbmNvZGluZ05hbWVMZW5ndGggLSAy
KTsKLQotICAgICAgICBpZiAoW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNsYXNzOltOU0hU
VFBVUkxSZXNwb25zZSBjbGFzc11dKSB7Ci0gICAgICAgICAgICBOU0hUVFBVUkxSZXNwb25zZSAq
aHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdldCgpOwot
Ci0gICAgICAgICAgICBtX2h0dHBTdGF0dXNDb2RlID0gW2h0dHBSZXNwb25zZSBzdGF0dXNDb2Rl
XTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluaXRMZXZlbCA8IEFsbEZpZWxkcykg
ewotICAgICAgICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZVJlZiA9IENGVVJMUmVz
cG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pOwotCi0g
ICAgICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBbTlNVUkxSZXNwb25zZSBhbGxIZWFkZXJG
aWVsZHNdIHRvIG1pbmltaXplIGNvcHlpbmcgKDxyZGFyOi8vcHJvYmxlbS8yNjc3ODg2Mz4pLgot
ICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMgPSBhZG9w
dENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKG1lc3NhZ2VSZWYpKTsKLSAgICAg
ICAgICAgICAgICBmb3IgKGF1dG8mIGNvbW1vbkhlYWRlciA6IGNvbW1vbkhlYWRlckZpZWxkcykg
ewotICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGhlYWRlcnMuZ2V0KCksIGNv
bW1vbkhlYWRlciwgKGNvbnN0IHZvaWQgKiopJnZhbHVlKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoY29tbW9uSGVhZGVyLCB2YWx1ZSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1f
aHR0cFN0YXR1c0NvZGUgPSAwOwotICAgICAgICAKLSAgICAgICAgW3Bvb2wgZHJhaW5dOworICAg
ICAgICAvLyBTdHJpcHBpbmcgZG91YmxlIHF1b3RlcyBhcyBhIHdvcmthcm91bmQgZm9yIDxyZGFy
Oi8vcHJvYmxlbS84NzU3MDg4PiwgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGF0IGlzIGZpeGVkLgor
ICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJs
ZVF1b3RlKFttX25zUmVzcG9uc2UuZ2V0KCkgdGV4dEVuY29kaW5nTmFtZV0pOworICAgICAgICBt
X2h0dHBTdGF0dXNDb2RlID0gaHR0cFJlc3BvbnNlID8gW2h0dHBSZXNwb25zZSBzdGF0dXNDb2Rl
XSA6IDA7CiAgICAgfQotCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYmIGluaXRM
ZXZlbCA9PSBBbGxGaWVsZHMpIHsKLSAgICAgICAgaWYgKFttX25zUmVzcG9uc2UuZ2V0KCkgaXNL
aW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewotICAgICAgICAgICAgTlNB
dXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsK
LQotICAgICAgICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBV
UkxSZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChSZXRhaW5Q
dHI8TlNTdHJpbmc+IGh0dHBTdGF0dXNMaW5lID0gYWRvcHROUyhjb3B5TlNVUkxSZXNwb25zZVN0
YXR1c0xpbmUoaHR0cFJlc3BvbnNlKSkpCi0gICAgICAgICAgICAgICAgbV9odHRwU3RhdHVzVGV4
dCA9IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0cFN0YXR1c0xpbmUu
Z2V0KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1faHR0cFN0YXR1c1Rl
eHQgPSBBdG9taWNTdHJpbmcoIk9LIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCk7Ci0KLSAgICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZVJlZiA9IENGVVJMUmVz
cG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pOworICAg
IGlmIChodHRwUmVzcG9uc2UpIHsKKyAgICAgICAgaWYgKGluaXRMZXZlbCA9PSBBbGxGaWVsZHMp
IHsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZVJlZiA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVz
cG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pOworICAgICAgICAgICAgbV9odHRw
U3RhdHVzVGV4dCA9IGV4dHJhY3RIVFRQU3RhdHVzVGV4dChtZXNzYWdlUmVmKTsKICAgICAgICAg
ICAgIG1faHR0cFZlcnNpb24gPSBTdHJpbmcoYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weVZlcnNp
b24obWVzc2FnZVJlZikpLmdldCgpKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwotCi0gICAg
ICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIFtOU1VSTFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc10g
dG8gbWluaW1pemUgY29weWluZyAoPHJkYXI6Ly9wcm9ibGVtLzI2Nzc4ODYzPikuCi0gICAgICAg
ICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBN
ZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7Ci0gICAgICAgICAgICBDRkRp
Y3Rpb25hcnlBcHBseUZ1bmN0aW9uKGhlYWRlcnMuZ2V0KCksIGFkZFRvSFRUUEhlYWRlck1hcCwg
Jm1faHR0cEhlYWRlckZpZWxkcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFtwb29sIGRy
YWluXTsKLSAgICAgICAgfQorICAgICAgICAgICAgaW5pdGlhbGl6ZUhUVFBIZWFkZXJzKE9ubHlD
b21tb25IZWFkZXJzOjpObywgaHR0cFJlc3BvbnNlLCBtX2h0dHBIZWFkZXJGaWVsZHMpOworICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVIVFRQSGVhZGVycyhPbmx5Q29tbW9u
SGVhZGVyczo6WWVzLCBodHRwUmVzcG9uc2UsIG1faHR0cEhlYWRlckZpZWxkcyk7CiAgICAgfQog
CiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281427</attachid>
            <date>2016-06-15 19:28:14 -0700</date>
            <delta_ts>2016-06-15 19:58:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615192813.patch</filename>
            <type>text/plain</type>
            <size>13774</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0NmIyODcxNDI3ZWY1MmUxYjRjYjRk
MDE2NTRmMjcwZWI5NGZmMjkuLmM2ZmY0NGI1NTc5ZjFjNTgzNThjOGU3OGMwMDJlMzI4YjJlZTYy
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRob2Qg
dG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAgICAg
IGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRvQXRv
bWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcHJvdmUgSGFzaE1hcCBhbmQgSGFzaFNldCBzdXBwb3J0IGZvciBSZWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhNWM4NTgxN2U3YjczODlmYzJkZWY1MWRhM2U2ZGJhMjc3YzMzMzhkLi4xODdl
MTk2YzllNGVjMTA4NTczNmY4ODg3NzM5MWYxYTkyZDY1NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoSW5pdExldmVsKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFJlYXNvblBocmFzZUZyb21I
VFRQU3RhdHVzTGluZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5o
OgorICAgICAgICBIYXZlIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoKSBy
ZXR1cm4gYW4gQXRvbWljU3RyaW5nIGFzIHRoZQorICAgICAgICBSZWFzb24gaXMgc3RvcmVkIGFz
IGFuIEF0b21pY1N0cmluZyBvbiBSZXNvdXJjZVJlc3BvbnNlLiBIYXZlIHRoZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiB1c2UgU3RyaW5nVmlldzo6c3ViU3RyaW5nKCk6OnRvQXRvbWljU3RyaW5n
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nRG91Ymxl
UXVvdGUpOgorICAgICAgICBNb3ZlIHRoZSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJsZVF1
b3RlIGxvZ2ljIGZyb20gcGxhdGZvcm1MYXp5SW5pdCgpCisgICAgICAgIHRvIGl0cyBvd24gZnVu
Y3Rpb24uIEhhdmUgaXQgdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0b21pY1N0cmlu
ZygpCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgYXRvbWl6aW5nIHRoZSB0ZXh0RW5j
b2RpbmdOYW1lIHRoYXQgaGFzIHN1cnJvdW5kaW5nCisgICAgICAgIGRvdWJsZS1xdW90ZXMuCisK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVIVFRQSGVhZGVycyk6CisgICAgICAgIE1vdmUg
SFRUUCBoZWFkZXJzIGluaXRpYWxpemF0aW9uIHRvIGl0cyBvd24gZnVuY3Rpb24gZm9yIGNsYXJp
dHkuCisKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RIVFRQU3RhdHVzVGV4dCk6CisgICAgICAg
IE1vdmUgSFRUUCBzdGF0dXMgVGV4dCBleHRyYWN0aW9uIHRvIGl0cyBvd24gZnVuY3Rpb24gZm9y
IGNsYXJpdHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAtIFRoZSBmdW5jdGlvbiBpcyBzdHJlYW1saW5lZCBhIGJpdCBi
ZWNhdXNlIG1vc3Qgb2YgdGhlIGxvZ2ljIHdhcyBtb3ZlZAorICAgICAgICAgIGludG8gc2VwYXJh
dGUgZnVuY3Rpb25zLgorICAgICAgICAtIERyb3AgdW5uZWNlc3NhcnkgKGluaXRMZXZlbCA+PSBD
b21tb25GaWVsZHNPbmx5KSBjaGVjayBpbiB0aGUgZmlyc3QKKyAgICAgICAgICBpZiBjYXNlIGFu
ZCByZXBsYWNlIHdpdGggYW4gYXNzZXJ0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxs
ZWQKKyAgICAgICAgICB3aXRoIENvbW1vbkZpZWxkc09ubHkgb3IgYWJvdmUgKEFsbEZpZWxkcyku
CisgICAgICAgIC0gRHJvcCB1bm5lY2Vzc2FyeSAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMpIGNo
ZWNrIGluIHRoZSBzZWNvbmQgaWYKKyAgICAgICAgICBjYXNlIGFzIHRoaXMgaXMgYWx3YXlzIHRy
dWUuIElmIG5vdCwgd2Ugd291bGQgaGF2ZSByZXR1cm5lZCBlYXJseQorICAgICAgICAgIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIHdoZW4gY2hlY2tpbmcKKyAgICAgICAgICBtX2lu
aXRMZXZlbCA+PSBpbml0TGV2ZWwuCisgICAgICAgIC0gVXNlIEF1dG9kcmFpbmVkUG9vbCBpbnN0
ZWFkIG9mIE5TQXV0b3JlbGVhc2VQb29sIGZvciBjb252ZW5pZW5jZSBhbmQgaGF2ZQorICAgICAg
ICAgIG9ubHkgMSBwb29sIGluc3RlYWQgb2YgMi4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5
IGNvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSgpIGZ1bmN0aW9uIGFuZCBjYWxsIGRpcmVjdGx5
CisgICAgICAgICAgQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoKSBzaW5jZSB3
ZSBhbHJlYWR5IGhhdmUgYQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgYXQgdGhlIGNhbGwg
c2l0ZS4KKwogMjAxNi0wNi0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICA8YXR0YWNobWVudD4gZWxlbWVudHMganVtcCBhcm91bmQgYSBsb3QgYXJv
dW5kIHdoZW4gc3VidGl0bGUgdGV4dCBjaGFuZ2VzIHNsaWdodGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDczOWU5NDU1YjdiYjlkYmE4OGYyMmQyNGE1ZWFkZTMyNmJiYTRlYzMuLmQ4
YjgzMDMxYzY0YTUzN2YyYWM2NDRkMGI2ZWZjMGI2YWU2OWRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5oCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3Q7Cisg
ICAgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKCkgY29uc3Q7CiAKICNpZiBVU0UoQ0YpCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBudWxsIHN0cmluZ3MgdG8gZW1wdHkgc3RyaW5n
cy4KQEAgLTQ1MSw2ICs0NTIsMTMgQEAgaW5saW5lIFN0cmluZyBTdHJpbmdWaWV3Ojp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOwog
fQogCitpbmxpbmUgQXRvbWljU3RyaW5nIFN0cmluZ1ZpZXc6OnRvQXRvbWljU3RyaW5nKCkgY29u
c3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgpOworICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hhcmFjdGVy
czE2KCksIGxlbmd0aCgpKTsKK30KKwogaW5saW5lIGZsb2F0IFN0cmluZ1ZpZXc6OnRvRmxvYXQo
Ym9vbCYgaXNWYWxpZCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZhYzhhZjYyNjBj
MDU1MDVkYTI2OWY4NWNiZmJmODBiNDcwM2E3MWIuLjQ4YmE4OWYzMDA5MmQwNWMyMzM1ZTM0OTc5
Mjc5MDA0YWY4NjJiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC00NjEsMTIgKzQ2MSwxMyBAQCBDb250ZW50VHlwZU9wdGlvbnNE
aXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlcgogfQogI2VuZGlmCiAKLVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKK0F0b21pY1N0cmluZyBleHRyYWN0UmVh
c29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKIHsK
LSAgICBzaXplX3Qgc3BhY2VQb3MgPSBzdGF0dXNMaW5lLmZpbmQoJyAnKTsKKyAgICBTdHJpbmdW
aWV3IHZpZXcgPSBzdGF0dXNMaW5lOworICAgIHNpemVfdCBzcGFjZVBvcyA9IHZpZXcuZmluZCgn
ICcpOwogICAgIC8vIFJlbW92ZSBzdGF0dXMgY29kZSBmcm9tIHRoZSBzdGF0dXMgbGluZS4KLSAg
ICBzcGFjZVBvcyA9IHN0YXR1c0xpbmUuZmluZCgnICcsIHNwYWNlUG9zICsgMSk7Ci0gICAgcmV0
dXJuIHN0YXR1c0xpbmUuc3Vic3RyaW5nKHNwYWNlUG9zICsgMSk7CisgICAgc3BhY2VQb3MgPSB2
aWV3LmZpbmQoJyAnLCBzcGFjZVBvcyArIDEpOworICAgIHJldHVybiB2aWV3LnN1YnN0cmluZyhz
cGFjZVBvcyArIDEpLnRvQXRvbWljU3RyaW5nKCk7CiB9CiAKIFhGcmFtZU9wdGlvbnNEaXNwb3Np
dGlvbiBwYXJzZVhGcmFtZU9wdGlvbnNIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggN2U1OGIz
ZDI0OTdiMjlmYTkwZWU5Yzg1YTZmOTJlMGJkMThjNWY1Yy4uYTFkZWZjOTMyZTBkMGE4NGU5MzYw
NWM5YTA2YmFmZjM5NzhjZWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuaApAQCAtNzgsNyArNzgsNyBAQCBTdHJpbmcgZXh0cmFjdE1JTUVUeXBl
RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7IAogdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVk
IGludCYgY2hhcnNldExlbiwgdW5zaWduZWQgaW50IHN0YXJ0ID0gMCk7CiBYU1NQcm90ZWN0aW9u
RGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVy
LCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmlu
ZyYgcmVwb3J0VVJMKTsKLVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNM
aW5lKGNvbnN0IFN0cmluZyYpOworQXRvbWljU3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9t
SFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CiBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb24g
cGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAvLyAtMSBjb3VsZCBi
ZSBzZXQgdG8gb25lIG9mIHRoZSByZXR1cm4gcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB0aGUgdmFs
dWUgaXMgbm90IHNwZWNpZmllZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KaW5kZXggYTYx
ZDZiOGVlYTAyNTU4ZWQwNjZkOWI0ZmUwOThmMDY2YmQ3OTA3My4uNWZhNmI2Yjg3ZWU1YzRmMmY5
MmNlZDQzYTI3Y2YwZWIwNzgwZGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KQEAg
LTMzLDcgKzMzLDEwIEBACiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8bGltaXRzPgorI2ltcG9ydCA8d3Rm
L0F1dG9kcmFpbmVkUG9vbC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ1LDg5ICsxNDgsODAgQEAgTlNVUkxSZXNw
b25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgICAgIGlu
aXROU1VSTFJlc3BvbnNlKCk7CiAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKIH0KLSAg
ICAKLXN0YXRpYyBOU1N0cmluZyAqY29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKQorCitzdGF0aWMgdm9pZCBhZGRUb0hUVFBIZWFkZXJNYXAoY29uc3Qg
dm9pZCoga2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBbcmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotICAg
IGlmICghY2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBIVFRQSGVhZGVyTWFw
KiBodHRwSGVhZGVyTWFwID0gKEhUVFBIZWFkZXJNYXAqKWNvbnRleHQ7CisgICAgaHR0cEhlYWRl
ck1hcC0+c2V0KChDRlN0cmluZ1JlZilrZXksIChDRlN0cmluZ1JlZil2YWx1ZSk7Cit9CiAKLSAg
ICBDRkhUVFBNZXNzYWdlUmVmIGNmSFRUUE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJl
c3BvbnNlKGNmUmVzcG9uc2UpOwotICAgIGlmICghY2ZIVFRQTWVzc2FnZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKK3N0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nRG91YmxlUXVvdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoIDwgMiB8fCB2YWx1ZVswXSAhPSAn
IicgfHwgdmFsdWVbbGVuZ3RoIC0gMV0gIT0gJyInKQorICAgICAgICByZXR1cm4gdmFsdWU7CiAK
LSAgICByZXR1cm4gKE5TU3RyaW5nICopQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xp
bmUoY2ZIVFRQTWVzc2FnZSk7CisgICAgcmV0dXJuIFN0cmluZ1ZpZXcodmFsdWUpLnN1YnN0cmlu
ZygxLCBsZW5ndGggLSAyKS50b0F0b21pY1N0cmluZygpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRU
b0hUVFBIZWFkZXJNYXAoY29uc3Qgdm9pZCoga2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCog
Y29udGV4dCkKK2VudW0gY2xhc3MgT25seUNvbW1vbkhlYWRlcnMgeyBObywgWWVzIH07CitzdGF0
aWMgaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhUVFBIZWFkZXJzKE9ubHlDb21tb25IZWFkZXJzIG9u
bHlDb21tb25IZWFkZXJzLCBOU0hUVFBVUkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlLCBIVFRQSGVh
ZGVyTWFwJiBoZWFkZXJzTWFwKQogewotICAgIEhUVFBIZWFkZXJNYXAqIGh0dHBIZWFkZXJNYXAg
PSAoSFRUUEhlYWRlck1hcCopY29udGV4dDsKLSAgICBodHRwSGVhZGVyTWFwLT5zZXQoKENGU3Ry
aW5nUmVmKWtleSwgKENGU3RyaW5nUmVmKXZhbHVlKTsKKyAgICBoZWFkZXJzTWFwLmNsZWFyKCk7
CisgICAgYXV0byBtZXNzYWdlUmVmID0gQ0ZVUkxSZXNwb25zZUdldEhUVFBSZXNwb25zZShbaHR0
cFJlc3BvbnNlIF9DRlVSTFJlc3BvbnNlXSk7CisKKyAgICAvLyBBdm9pZCBjYWxsaW5nIFtOU1VS
TFJlc3BvbnNlIGFsbEhlYWRlckZpZWxkc10gdG8gbWluaW1pemUgY29weWluZyAoPHJkYXI6Ly9w
cm9ibGVtLzI2Nzc4ODYzPikuCisgICAgYXV0byBoZWFkZXJzID0gYWRvcHRDRihDRkhUVFBNZXNz
YWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7CisgICAgaWYgKG9ubHlDb21tb25I
ZWFkZXJzID09IE9ubHlDb21tb25IZWFkZXJzOjpZZXMpIHsKKyAgICAgICAgZm9yIChhdXRvJiBj
b21tb25IZWFkZXIgOiBjb21tb25IZWFkZXJGaWVsZHMpIHsKKyAgICAgICAgICAgIGNvbnN0IHZv
aWQqIHZhbHVlOworICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50
KGhlYWRlcnMuZ2V0KCksIGNvbW1vbkhlYWRlciwgJnZhbHVlKSkKKyAgICAgICAgICAgICAgICBo
ZWFkZXJzTWFwLnNldChjb21tb25IZWFkZXIsIChDRlN0cmluZ1JlZikgdmFsdWUpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlv
bihoZWFkZXJzLmdldCgpLCBhZGRUb0hUVFBIZWFkZXJNYXAsICZoZWFkZXJzTWFwKTsKK30KKwor
c3RhdGljIGlubGluZSBBdG9taWNTdHJpbmcgZXh0cmFjdEhUVFBTdGF0dXNUZXh0KENGSFRUUE1l
c3NhZ2VSZWYgbWVzc2FnZVJlZikKK3sKKyAgICBpZiAoYXV0byBodHRwU3RhdHVzTGluZSA9IGFk
b3B0Q0YoQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUobWVzc2FnZVJlZikpKQor
ICAgICAgICByZXR1cm4gZXh0cmFjdFJlYXNvblBocmFzZUZyb21IVFRQU3RhdHVzTGluZShodHRw
U3RhdHVzTGluZS5nZXQoKSk7CisKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QXRvbWljU3Ry
aW5nPiBkZWZhdWx0U3RhdHVzVGV4dCgiT0siLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21M
aXRlcmFsKTsKKyAgICByZXR1cm4gZGVmYXVsdFN0YXR1c1RleHQ7CiB9CiAKIHZvaWQgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwgaW5pdExldmVsKQogeworICAg
IEFTU0VSVChpbml0TGV2ZWwgPj0gQ29tbW9uRmllbGRzT25seSk7CisKICAgICBpZiAobV9pbml0
TGV2ZWwgPj0gaW5pdExldmVsKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9pc051bGwg
fHwgIW1fbnNSZXNwb25zZSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIGlmIChtX2luaXRM
ZXZlbCA8IENvbW1vbkZpZWxkc09ubHkgJiYgaW5pdExldmVsID49IENvbW1vbkZpZWxkc09ubHkp
IHsKLSAgICAgICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29s
IGFsbG9jXSBpbml0XTsKKyAgICBBdXRvZHJhaW5lZFBvb2wgcG9vbDsKKworICAgIE5TSFRUUFVS
TFJlc3BvbnNlICpodHRwUmVzcG9uc2UgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIGlzS2luZE9mQ2xh
c3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0gPyAoTlNIVFRQVVJMUmVzcG9uc2UgKiltX25z
UmVzcG9uc2UuZ2V0KCkgOiBudWxscHRyOwogCi0gICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5j
bGVhcigpOworICAgIGlmIChtX2luaXRMZXZlbCA8IENvbW1vbkZpZWxkc09ubHkpIHsKICAgICAg
ICAgbV91cmwgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIFVSTF07CiAgICAgICAgIG1fbWltZVR5cGUg
PSBbbV9uc1Jlc3BvbnNlLmdldCgpIE1JTUVUeXBlXTsKICAgICAgICAgbV9leHBlY3RlZENvbnRl
bnRMZW5ndGggPSBbbV9uc1Jlc3BvbnNlLmdldCgpIGV4cGVjdGVkQ29udGVudExlbmd0aF07Ci0g
ICAgICAgIG1fdGV4dEVuY29kaW5nTmFtZSA9IFttX25zUmVzcG9uc2UuZ2V0KCkgdGV4dEVuY29k
aW5nTmFtZV07Ci0KLSAgICAgICAgLy8gV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzg3
NTcwODg+LCBjYW4gYmUgcmVtb3ZlZCBvbmNlIHRoYXQgaXMgZml4ZWQuCi0gICAgICAgIHVuc2ln
bmVkIHRleHRFbmNvZGluZ05hbWVMZW5ndGggPSBtX3RleHRFbmNvZGluZ05hbWUubGVuZ3RoKCk7
Ci0gICAgICAgIGlmICh0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoID49IDIgJiYgbV90ZXh0RW5jb2Rp
bmdOYW1lWzBVXSA9PSAnIicgJiYgbV90ZXh0RW5jb2RpbmdOYW1lW3RleHRFbmNvZGluZ05hbWVM
ZW5ndGggLSAxXSA9PSAnIicpCi0gICAgICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBtX3Rl
eHRFbmNvZGluZ05hbWUuc3RyaW5nKCkuc3Vic3RyaW5nKDEsIHRleHRFbmNvZGluZ05hbWVMZW5n
dGggLSAyKTsKLQotICAgICAgICBpZiAoW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNsYXNz
OltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dKSB7Ci0gICAgICAgICAgICBOU0hUVFBVUkxSZXNw
b25zZSAqaHR0cFJlc3BvbnNlID0gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9uc1Jlc3BvbnNlLmdl
dCgpOwotCi0gICAgICAgICAgICBtX2h0dHBTdGF0dXNDb2RlID0gW2h0dHBSZXNwb25zZSBzdGF0
dXNDb2RlXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGluaXRMZXZlbCA8IEFsbEZp
ZWxkcykgewotICAgICAgICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZVJlZiA9IENG
VVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0p
OwotCi0gICAgICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBbTlNVUkxSZXNwb25zZSBhbGxI
ZWFkZXJGaWVsZHNdIHRvIG1pbmltaXplIGNvcHlpbmcgKDxyZGFyOi8vcHJvYmxlbS8yNjc3ODg2
Mz4pLgotICAgICAgICAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IGhlYWRlcnMg
PSBhZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5QWxsSGVhZGVyRmllbGRzKG1lc3NhZ2VSZWYpKTsK
LSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGNvbW1vbkhlYWRlciA6IGNvbW1vbkhlYWRlckZp
ZWxkcykgewotICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiB2YWx1ZTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKENGRGljdGlvbmFyeUdldFZhbHVlSWZQcmVzZW50KGhlYWRlcnMuZ2V0
KCksIGNvbW1vbkhlYWRlciwgKGNvbnN0IHZvaWQgKiopJnZhbHVlKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIG1faHR0cEhlYWRlckZpZWxkcy5zZXQoY29tbW9uSGVhZGVyLCB2YWx1ZSk7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIG1faHR0cFN0YXR1c0NvZGUgPSAwOwotICAgICAgICAKLSAgICAgICAgW3Bvb2wgZHJhaW5d
OworICAgICAgICAvLyBTdHJpcHBpbmcgZG91YmxlIHF1b3RlcyBhcyBhIHdvcmthcm91bmQgZm9y
IDxyZGFyOi8vcHJvYmxlbS84NzU3MDg4PiwgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGF0IGlzIGZp
eGVkLgorICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBzdHJpcExlYWRpbmdBbmRUcmFpbGlu
Z0RvdWJsZVF1b3RlKFttX25zUmVzcG9uc2UuZ2V0KCkgdGV4dEVuY29kaW5nTmFtZV0pOworICAg
ICAgICBtX2h0dHBTdGF0dXNDb2RlID0gaHR0cFJlc3BvbnNlID8gW2h0dHBSZXNwb25zZSBzdGF0
dXNDb2RlXSA6IDA7CiAgICAgfQotCi0gICAgaWYgKG1faW5pdExldmVsIDwgQWxsRmllbGRzICYm
IGluaXRMZXZlbCA9PSBBbGxGaWVsZHMpIHsKLSAgICAgICAgaWYgKFttX25zUmVzcG9uc2UuZ2V0
KCkgaXNLaW5kT2ZDbGFzczpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewotICAgICAgICAg
ICAgTlNBdXRvcmVsZWFzZVBvb2wqIHBvb2wgPSBbW05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBp
bml0XTsKLQotICAgICAgICAgICAgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSA9IChO
U0hUVFBVUkxSZXNwb25zZSAqKW1fbnNSZXNwb25zZS5nZXQoKTsKLSAgICAgICAgICAgIGlmIChS
ZXRhaW5QdHI8TlNTdHJpbmc+IGh0dHBTdGF0dXNMaW5lID0gYWRvcHROUyhjb3B5TlNVUkxSZXNw
b25zZVN0YXR1c0xpbmUoaHR0cFJlc3BvbnNlKSkpCi0gICAgICAgICAgICAgICAgbV9odHRwU3Rh
dHVzVGV4dCA9IGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0cFN0YXR1
c0xpbmUuZ2V0KCkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1faHR0cFN0
YXR1c1RleHQgPSBBdG9taWNTdHJpbmcoIk9LIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7Ci0KLSAgICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgbWVzc2FnZVJlZiA9IENG
VVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0p
OworICAgIGlmIChodHRwUmVzcG9uc2UpIHsKKyAgICAgICAgaWYgKGluaXRMZXZlbCA9PSBBbGxG
aWVsZHMpIHsKKyAgICAgICAgICAgIGF1dG8gbWVzc2FnZVJlZiA9IENGVVJMUmVzcG9uc2VHZXRI
VFRQUmVzcG9uc2UoW2h0dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pOworICAgICAgICAgICAg
bV9odHRwU3RhdHVzVGV4dCA9IGV4dHJhY3RIVFRQU3RhdHVzVGV4dChtZXNzYWdlUmVmKTsKICAg
ICAgICAgICAgIG1faHR0cFZlcnNpb24gPSBTdHJpbmcoYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29w
eVZlcnNpb24obWVzc2FnZVJlZikpLmdldCgpKS5jb252ZXJ0VG9BU0NJSVVwcGVyY2FzZSgpOwot
Ci0gICAgICAgICAgICAvLyBBdm9pZCBjYWxsaW5nIFtOU1VSTFJlc3BvbnNlIGFsbEhlYWRlckZp
ZWxkc10gdG8gbWluaW1pemUgY29weWluZyAoPHJkYXI6Ly9wcm9ibGVtLzI2Nzc4ODYzPikuCi0g
ICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJzID0gYWRvcHRDRihD
RkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7Ci0gICAgICAgICAg
ICBDRkRpY3Rpb25hcnlBcHBseUZ1bmN0aW9uKGhlYWRlcnMuZ2V0KCksIGFkZFRvSFRUUEhlYWRl
ck1hcCwgJm1faHR0cEhlYWRlckZpZWxkcyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFtw
b29sIGRyYWluXTsKLSAgICAgICAgfQorICAgICAgICAgICAgaW5pdGlhbGl6ZUhUVFBIZWFkZXJz
KE9ubHlDb21tb25IZWFkZXJzOjpObywgaHR0cFJlc3BvbnNlLCBtX2h0dHBIZWFkZXJGaWVsZHMp
OworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGluaXRpYWxpemVIVFRQSGVhZGVycyhPbmx5
Q29tbW9uSGVhZGVyczo6WWVzLCBodHRwUmVzcG9uc2UsIG1faHR0cEhlYWRlckZpZWxkcyk7CiAg
ICAgfQogCiAgICAgbV9pbml0TGV2ZWwgPSBpbml0TGV2ZWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281430</attachid>
            <date>2016-06-15 19:58:47 -0700</date>
            <delta_ts>2016-06-15 20:00:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158809-20160615195846.patch</filename>
            <type>text/plain</type>
            <size>13775</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyMTE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGI0NmIyODcxNDI3ZWY1MmUxYjRjYjRk
MDE2NTRmMjcwZWI5NGZmMjkuLmM2ZmY0NGI1NTc5ZjFjNTgzNThjOGU3OGMwMDJlMzI4YjJlZTYy
ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3Vy
Y2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdG9BdG9taWNTdHJpbmcoKSBtZXRob2Qg
dG8gU3RyaW5nVmlldyB0byBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0b1N0cmluZygpCisgICAgICAg
IGFuZCB0aGVuIGF0b21pemluZyB0aGUgU3RyaW5nIGF0IGNhbGwgc2l0ZXMuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OnRvQXRv
bWljU3RyaW5nKToKKwogMjAxNi0wNi0xNSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcHJvdmUgSGFzaE1hcCBhbmQgSGFzaFNldCBzdXBwb3J0IGZvciBSZWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBhNWM4NTgxN2U3YjczODlmYzJkZWY1MWRhM2U2ZGJhMjc3YzMzMzhkLi4xODdl
MTk2YzllNGVjMTA4NTczNmY4ODg3NzM5MWYxYTkyZDY1NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsNDggQEAKKzIwMTYtMDYtMTUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENsZWFuIHVwIC8gb3B0aW1pemUgUmVzb3VyY2VSZXNwb25zZTo6cGxh
dGZvcm1MYXp5SW5pdChJbml0TGV2ZWwpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNTg4MDkKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICBDbGVhbiB1cCAvIG9wdGltaXplIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoSW5pdExldmVsKS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UFBhcnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXh0cmFjdFJlYXNvblBocmFzZUZyb21I
VFRQU3RhdHVzTGluZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5o
OgorICAgICAgICBIYXZlIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoKSBy
ZXR1cm4gYW4gQXRvbWljU3RyaW5nIGFzIHRoZQorICAgICAgICBSZWFzb24gaXMgc3RvcmVkIGFz
IGFuIEF0b21pY1N0cmluZyBvbiBSZXNvdXJjZVJlc3BvbnNlLiBIYXZlIHRoZQorICAgICAgICBp
bXBsZW1lbnRhdGlvbiB1c2UgU3RyaW5nVmlldzo6c3ViU3RyaW5nKCk6OnRvQXRvbWljU3RyaW5n
KCkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NvY29hL1Jlc291cmNlUmVzcG9uc2VD
b2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nRG91Ymxl
UXVvdGUpOgorICAgICAgICBNb3ZlIHRoZSBzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0RvdWJsZVF1
b3RlIGxvZ2ljIGZyb20gcGxhdGZvcm1MYXp5SW5pdCgpCisgICAgICAgIHRvIGl0cyBvd24gZnVu
Y3Rpb24uIEhhdmUgaXQgdXNlIFN0cmluZ1ZpZXc6OnN1YlN0cmluZygpOjp0b0F0b21pY1N0cmlu
ZygpCisgICAgICAgIHRvIGF2b2lkIHVubmVjZXNzYXJpbHkgYXRvbWl6aW5nIHRoZSB0ZXh0RW5j
b2RpbmdOYW1lIHRoYXQgaGFzIHN1cnJvdW5kaW5nCisgICAgICAgIGRvdWJsZS1xdW90ZXMuCisK
KyAgICAgICAgKFdlYkNvcmU6OmluaXRpYWxpemVIVFRQSGVhZGVycyk6CisgICAgICAgIE1vdmUg
SFRUUCBoZWFkZXJzIGluaXRpYWxpemF0aW9uIHRvIGl0cyBvd24gZnVuY3Rpb24gZm9yIGNsYXJp
dHkuCisKKyAgICAgICAgKFdlYkNvcmU6OmV4dHJhY3RIVFRQU3RhdHVzVGV4dCk6CisgICAgICAg
IE1vdmUgSFRUUCBzdGF0dXMgVGV4dCBleHRyYWN0aW9uIHRvIGl0cyBvd24gZnVuY3Rpb24gZm9y
IGNsYXJpdHkuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OnBsYXRmb3Jt
TGF6eUluaXQpOgorICAgICAgICAtIFRoZSBmdW5jdGlvbiBpcyBzdHJlYW1saW5lZCBhIGJpdCBi
ZWNhdXNlIG1vc3Qgb2YgdGhlIGxvZ2ljIHdhcyBtb3ZlZAorICAgICAgICAgIGludG8gc2VwYXJh
dGUgZnVuY3Rpb25zLgorICAgICAgICAtIERyb3AgdW5uZWNlc3NhcnkgKGluaXRMZXZlbCA+PSBD
b21tb25GaWVsZHNPbmx5KSBjaGVjayBpbiB0aGUgZmlyc3QKKyAgICAgICAgICBpZiBjYXNlIGFu
ZCByZXBsYWNlIHdpdGggYW4gYXNzZXJ0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGFsd2F5cyBjYWxs
ZWQKKyAgICAgICAgICB3aXRoIENvbW1vbkZpZWxkc09ubHkgb3IgYWJvdmUgKEFsbEZpZWxkcyku
CisgICAgICAgIC0gRHJvcCB1bm5lY2Vzc2FyeSAobV9pbml0TGV2ZWwgPCBBbGxGaWVsZHMpIGNo
ZWNrIGluIHRoZSBzZWNvbmQgaWYKKyAgICAgICAgICBjYXNlIGFzIHRoaXMgaXMgYWx3YXlzIHRy
dWUuIElmIG5vdCwgd2Ugd291bGQgaGF2ZSByZXR1cm5lZCBlYXJseQorICAgICAgICAgIGF0IHRo
ZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIHdoZW4gY2hlY2tpbmcKKyAgICAgICAgICBtX2lu
aXRMZXZlbCA+PSBpbml0TGV2ZWwuCisgICAgICAgIC0gVXNlIEF1dG9kcmFpbmVkUG9vbCBpbnN0
ZWFkIG9mIE5TQXV0b3JlbGVhc2VQb29sIGZvciBjb252ZW5pZW5jZSBhbmQgaGF2ZQorICAgICAg
ICAgIG9ubHkgMSBwb29sIGluc3RlYWQgb2YgMi4KKyAgICAgICAgLSBEcm9wIHVubmVjZXNzYXJ5
IGNvcHlOU1VSTFJlc3BvbnNlU3RhdHVzTGluZSgpIGZ1bmN0aW9uIGFuZCBjYWxsIGRpcmVjdGx5
CisgICAgICAgICAgQ0ZIVFRQTWVzc2FnZUNvcHlSZXNwb25zZVN0YXR1c0xpbmUoKSBzaW5jZSB3
ZSBhbHJlYWR5IGhhdmUgYQorICAgICAgICAgIENGSFRUUE1lc3NhZ2VSZWYgYXQgdGhlIGNhbGwg
c2l0ZS4KKwogMjAxNi0wNi0xNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KIAogICAgICAgICA8YXR0YWNobWVudD4gZWxlbWVudHMganVtcCBhcm91bmQgYSBsb3QgYXJv
dW5kIHdoZW4gc3VidGl0bGUgdGV4dCBjaGFuZ2VzIHNsaWdodGx5CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDczOWU5NDU1YjdiYjlkYmE4OGYyMmQyNGE1ZWFkZTMyNmJiYTRlYzMuLmQ4
YjgzMDMxYzY0YTUzN2YyYWM2NDRkMGI2ZWZjMGI2YWU2OWRkMTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3Ry
aW5nVmlldy5oCkBAIC04Niw2ICs4Niw3IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyB0b1N0cmlu
ZygpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZ1dpdGhvdXRDb3B5aW5nKCkgY29uc3Q7Cisg
ICAgQXRvbWljU3RyaW5nIHRvQXRvbWljU3RyaW5nKCkgY29uc3Q7CiAKICNpZiBVU0UoQ0YpCiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiBjb252ZXJ0cyBudWxsIHN0cmluZ3MgdG8gZW1wdHkgc3RyaW5n
cy4KQEAgLTQ1MSw2ICs0NTIsMTMgQEAgaW5saW5lIFN0cmluZyBTdHJpbmdWaWV3Ojp0b1N0cmlu
ZygpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZyhjaGFyYWN0ZXJzMTYoKSwgbGVuZ3RoKCkpOwog
fQogCitpbmxpbmUgQXRvbWljU3RyaW5nIFN0cmluZ1ZpZXc6OnRvQXRvbWljU3RyaW5nKCkgY29u
c3QKK3sKKyAgICBpZiAoaXM4Qml0KCkpCisgICAgICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hh
cmFjdGVyczgoKSwgbV9sZW5ndGgpOworICAgIHJldHVybiBBdG9taWNTdHJpbmcoY2hhcmFjdGVy
czE2KCksIGxlbmd0aCgpKTsKK30KKwogaW5saW5lIGZsb2F0IFN0cmluZ1ZpZXc6OnRvRmxvYXQo
Ym9vbCYgaXNWYWxpZCkgY29uc3QKIHsKICAgICBpZiAoaXM4Qml0KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4IGZhYzhhZjYyNjBj
MDU1MDVkYTI2OWY4NWNiZmJmODBiNDcwM2E3MWIuLjQ4YmE4OWYzMDA5MmQwNWMyMzM1ZTM0OTc5
Mjc5MDA0YWY4NjJiZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
SFRUUFBhcnNlcnMuY3BwCkBAIC00NjEsMTIgKzQ2MSwxMyBAQCBDb250ZW50VHlwZU9wdGlvbnNE
aXNwb3NpdGlvbiBwYXJzZUNvbnRlbnRUeXBlT3B0aW9uc0hlYWRlcihjb25zdCBTdHJpbmcmIGhl
YWRlcgogfQogI2VuZGlmCiAKLVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0
dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKK0F0b21pY1N0cmluZyBleHRyYWN0UmVh
c29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGNvbnN0IFN0cmluZyYgc3RhdHVzTGluZSkKIHsK
LSAgICBzaXplX3Qgc3BhY2VQb3MgPSBzdGF0dXNMaW5lLmZpbmQoJyAnKTsKKyAgICBTdHJpbmdW
aWV3IHZpZXcgPSBzdGF0dXNMaW5lOworICAgIHNpemVfdCBzcGFjZVBvcyA9IHZpZXcuZmluZCgn
ICcpOwogICAgIC8vIFJlbW92ZSBzdGF0dXMgY29kZSBmcm9tIHRoZSBzdGF0dXMgbGluZS4KLSAg
ICBzcGFjZVBvcyA9IHN0YXR1c0xpbmUuZmluZCgnICcsIHNwYWNlUG9zICsgMSk7Ci0gICAgcmV0
dXJuIHN0YXR1c0xpbmUuc3Vic3RyaW5nKHNwYWNlUG9zICsgMSk7CisgICAgc3BhY2VQb3MgPSB2
aWV3LmZpbmQoJyAnLCBzcGFjZVBvcyArIDEpOworICAgIHJldHVybiB2aWV3LnN1YnN0cmluZyhz
cGFjZVBvcyArIDEpLnRvQXRvbWljU3RyaW5nKCk7CiB9CiAKIFhGcmFtZU9wdGlvbnNEaXNwb3Np
dGlvbiBwYXJzZVhGcmFtZU9wdGlvbnNIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKaW5kZXggN2U1OGIz
ZDI0OTdiMjlmYTkwZWU5Yzg1YTZmOTJlMGJkMThjNWY1Yy4uYTFkZWZjOTMyZTBkMGE4NGU5MzYw
NWM5YTA2YmFmZjM5NzhjZWVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQUGFyc2Vycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuaApAQCAtNzgsNyArNzgsNyBAQCBTdHJpbmcgZXh0cmFjdE1JTUVUeXBl
RnJvbU1lZGlhVHlwZShjb25zdCBTdHJpbmcmKTsKIFN0cmluZyBleHRyYWN0Q2hhcnNldEZyb21N
ZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7IAogdm9pZCBmaW5kQ2hhcnNldEluTWVkaWFUeXBlKGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBpbnQmIGNoYXJzZXRQb3MsIHVuc2lnbmVk
IGludCYgY2hhcnNldExlbiwgdW5zaWduZWQgaW50IHN0YXJ0ID0gMCk7CiBYU1NQcm90ZWN0aW9u
RGlzcG9zaXRpb24gcGFyc2VYU1NQcm90ZWN0aW9uSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVy
LCBTdHJpbmcmIGZhaWx1cmVSZWFzb24sIHVuc2lnbmVkJiBmYWlsdXJlUG9zaXRpb24sIFN0cmlu
ZyYgcmVwb3J0VVJMKTsKLVN0cmluZyBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNM
aW5lKGNvbnN0IFN0cmluZyYpOworQXRvbWljU3RyaW5nIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9t
SFRUUFN0YXR1c0xpbmUoY29uc3QgU3RyaW5nJik7CiBYRnJhbWVPcHRpb25zRGlzcG9zaXRpb24g
cGFyc2VYRnJhbWVPcHRpb25zSGVhZGVyKGNvbnN0IFN0cmluZyYpOwogCiAvLyAtMSBjb3VsZCBi
ZSBzZXQgdG8gb25lIG9mIHRoZSByZXR1cm4gcGFyYW1ldGVycyB0byBpbmRpY2F0ZSB0aGUgdmFs
dWUgaXMgbm90IHNwZWNpZmllZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY29jb2EvUmVzb3VyY2VSZXNwb25zZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KaW5kZXggYTYx
ZDZiOGVlYTAyNTU4ZWQwNjZkOWI0ZmUwOThmMDY2YmQ3OTA3My4uNDM1N2I1ZjE1NGIzNGM3NjNi
ZjMzMmQ4Mzc1YTMyOGZmOWE0YjMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jb2NvYS9SZXNvdXJjZVJlc3BvbnNlQ29jb2EubW0KQEAg
LTMzLDcgKzMzLDEwIEBACiAjaW1wb3J0ICJXZWJDb3JlVVJMUmVzcG9uc2UuaCIKICNpbXBvcnQg
PEZvdW5kYXRpb24vRm91bmRhdGlvbi5oPgogI2ltcG9ydCA8bGltaXRzPgorI2ltcG9ydCA8d3Rm
L0F1dG9kcmFpbmVkUG9vbC5oPgorI2ltcG9ydCA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW1w
b3J0IDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTQ1LDg5ICsxNDgsODAgQEAgTlNVUkxSZXNw
b25zZSAqUmVzb3VyY2VSZXNwb25zZTo6bnNVUkxSZXNwb25zZSgpIGNvbnN0CiAgICAgICAgIGlu
aXROU1VSTFJlc3BvbnNlKCk7CiAgICAgcmV0dXJuIG1fbnNSZXNwb25zZS5nZXQoKTsKIH0KLSAg
ICAKLXN0YXRpYyBOU1N0cmluZyAqY29weU5TVVJMUmVzcG9uc2VTdGF0dXNMaW5lKE5TVVJMUmVz
cG9uc2UgKnJlc3BvbnNlKQorCitzdGF0aWMgdm9pZCBhZGRUb0hUVFBIZWFkZXJNYXAoY29uc3Qg
dm9pZCoga2V5LCBjb25zdCB2b2lkKiB2YWx1ZSwgdm9pZCogY29udGV4dCkKIHsKLSAgICBDRlVS
TFJlc3BvbnNlUmVmIGNmUmVzcG9uc2UgPSBbcmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdOwotICAg
IGlmICghY2ZSZXNwb25zZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKKyAgICBIVFRQSGVhZGVyTWFw
KiBodHRwSGVhZGVyTWFwID0gKEhUVFBIZWFkZXJNYXAqKWNvbnRleHQ7CisgICAgaHR0cEhlYWRl
ck1hcC0+c2V0KChDRlN0cmluZ1JlZilrZXksIChDRlN0cmluZ1JlZil2YWx1ZSk7Cit9CiAKLSAg
ICBDRkhUVFBNZXNzYWdlUmVmIGNmSFRUUE1lc3NhZ2UgPSBDRlVSTFJlc3BvbnNlR2V0SFRUUFJl
c3BvbnNlKGNmUmVzcG9uc2UpOwotICAgIGlmICghY2ZIVFRQTWVzc2FnZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKK3N0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIHN0cmlwTGVhZGluZ0FuZFRyYWls
aW5nRG91YmxlUXVvdGUoY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSB2YWx1ZS5sZW5ndGgoKTsKKyAgICBpZiAobGVuZ3RoIDwgMiB8fCB2YWx1ZVswdV0gIT0g
JyInIHx8IHZhbHVlW2xlbmd0aCAtIDFdICE9ICciJykKKyAgICAgICAgcmV0dXJuIHZhbHVlOwog
Ci0gICAgcmV0dXJuIChOU1N0cmluZyAqKUNGSFRUUE1lc3NhZ2VDb3B5UmVzcG9uc2VTdGF0dXNM
aW5lKGNmSFRUUE1lc3NhZ2UpOworICAgIHJldHVybiBTdHJpbmdWaWV3KHZhbHVlKS5zdWJzdHJp
bmcoMSwgbGVuZ3RoIC0gMikudG9BdG9taWNTdHJpbmcoKTsKIH0KIAotc3RhdGljIHZvaWQgYWRk
VG9IVFRQSGVhZGVyTWFwKGNvbnN0IHZvaWQqIGtleSwgY29uc3Qgdm9pZCogdmFsdWUsIHZvaWQq
IGNvbnRleHQpCitlbnVtIGNsYXNzIE9ubHlDb21tb25IZWFkZXJzIHsgTm8sIFllcyB9Oworc3Rh
dGljIGlubGluZSB2b2lkIGluaXRpYWxpemVIVFRQSGVhZGVycyhPbmx5Q29tbW9uSGVhZGVycyBv
bmx5Q29tbW9uSGVhZGVycywgTlNIVFRQVVJMUmVzcG9uc2UgKmh0dHBSZXNwb25zZSwgSFRUUEhl
YWRlck1hcCYgaGVhZGVyc01hcCkKIHsKLSAgICBIVFRQSGVhZGVyTWFwKiBodHRwSGVhZGVyTWFw
ID0gKEhUVFBIZWFkZXJNYXAqKWNvbnRleHQ7Ci0gICAgaHR0cEhlYWRlck1hcC0+c2V0KChDRlN0
cmluZ1JlZilrZXksIChDRlN0cmluZ1JlZil2YWx1ZSk7CisgICAgaGVhZGVyc01hcC5jbGVhcigp
OworICAgIGF1dG8gbWVzc2FnZVJlZiA9IENGVVJMUmVzcG9uc2VHZXRIVFRQUmVzcG9uc2UoW2h0
dHBSZXNwb25zZSBfQ0ZVUkxSZXNwb25zZV0pOworCisgICAgLy8gQXZvaWQgY2FsbGluZyBbTlNV
UkxSZXNwb25zZSBhbGxIZWFkZXJGaWVsZHNdIHRvIG1pbmltaXplIGNvcHlpbmcgKDxyZGFyOi8v
cHJvYmxlbS8yNjc3ODg2Mz4pLgorICAgIGF1dG8gaGVhZGVycyA9IGFkb3B0Q0YoQ0ZIVFRQTWVz
c2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMobWVzc2FnZVJlZikpOworICAgIGlmIChvbmx5Q29tbW9u
SGVhZGVycyA9PSBPbmx5Q29tbW9uSGVhZGVyczo6WWVzKSB7CisgICAgICAgIGZvciAoYXV0byYg
Y29tbW9uSGVhZGVyIDogY29tbW9uSGVhZGVyRmllbGRzKSB7CisgICAgICAgICAgICBjb25zdCB2
b2lkKiB2YWx1ZTsKKyAgICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2Vu
dChoZWFkZXJzLmdldCgpLCBjb21tb25IZWFkZXIsICZ2YWx1ZSkpCisgICAgICAgICAgICAgICAg
aGVhZGVyc01hcC5zZXQoY29tbW9uSGVhZGVyLCAoQ0ZTdHJpbmdSZWYpIHZhbHVlKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIENGRGljdGlvbmFyeUFwcGx5RnVuY3Rp
b24oaGVhZGVycy5nZXQoKSwgYWRkVG9IVFRQSGVhZGVyTWFwLCAmaGVhZGVyc01hcCk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgQXRvbWljU3RyaW5nIGV4dHJhY3RIVFRQU3RhdHVzVGV4dChDRkhUVFBN
ZXNzYWdlUmVmIG1lc3NhZ2VSZWYpCit7CisgICAgaWYgKGF1dG8gaHR0cFN0YXR1c0xpbmUgPSBh
ZG9wdENGKENGSFRUUE1lc3NhZ2VDb3B5UmVzcG9uc2VTdGF0dXNMaW5lKG1lc3NhZ2VSZWYpKSkK
KyAgICAgICAgcmV0dXJuIGV4dHJhY3RSZWFzb25QaHJhc2VGcm9tSFRUUFN0YXR1c0xpbmUoaHR0
cFN0YXR1c0xpbmUuZ2V0KCkpOworCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEF0b21pY1N0
cmluZz4gZGVmYXVsdFN0YXR1c1RleHQoIk9LIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCk7CisgICAgcmV0dXJuIGRlZmF1bHRTdGF0dXNUZXh0OwogfQogCiB2b2lkIFJlc291
cmNlUmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsIGluaXRMZXZlbCkKIHsKKyAg
ICBBU1NFUlQoaW5pdExldmVsID49IENvbW1vbkZpZWxkc09ubHkpOworCiAgICAgaWYgKG1faW5p
dExldmVsID49IGluaXRMZXZlbCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1faXNOdWxs
IHx8ICFtX25zUmVzcG9uc2UpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAobV9pbml0
TGV2ZWwgPCBDb21tb25GaWVsZHNPbmx5ICYmIGluaXRMZXZlbCA+PSBDb21tb25GaWVsZHNPbmx5
KSB7Ci0gICAgICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9v
bCBhbGxvY10gaW5pdF07CisgICAgQXV0b2RyYWluZWRQb29sIHBvb2w7CisKKyAgICBOU0hUVFBV
UkxSZXNwb25zZSAqaHR0cFJlc3BvbnNlID0gW21fbnNSZXNwb25zZS5nZXQoKSBpc0tpbmRPZkNs
YXNzOltOU0hUVFBVUkxSZXNwb25zZSBjbGFzc11dID8gKE5TSFRUUFVSTFJlc3BvbnNlICopbV9u
c1Jlc3BvbnNlLmdldCgpIDogbnVsbHB0cjsKIAotICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMu
Y2xlYXIoKTsKKyAgICBpZiAobV9pbml0TGV2ZWwgPCBDb21tb25GaWVsZHNPbmx5KSB7CiAgICAg
ICAgIG1fdXJsID0gW21fbnNSZXNwb25zZS5nZXQoKSBVUkxdOwogICAgICAgICBtX21pbWVUeXBl
ID0gW21fbnNSZXNwb25zZS5nZXQoKSBNSU1FVHlwZV07CiAgICAgICAgIG1fZXhwZWN0ZWRDb250
ZW50TGVuZ3RoID0gW21fbnNSZXNwb25zZS5nZXQoKSBleHBlY3RlZENvbnRlbnRMZW5ndGhdOwot
ICAgICAgICBtX3RleHRFbmNvZGluZ05hbWUgPSBbbV9uc1Jlc3BvbnNlLmdldCgpIHRleHRFbmNv
ZGluZ05hbWVdOwotCi0gICAgICAgIC8vIFdvcmthcm91bmQgZm9yIDxyZGFyOi8vcHJvYmxlbS84
NzU3MDg4PiwgY2FuIGJlIHJlbW92ZWQgb25jZSB0aGF0IGlzIGZpeGVkLgotICAgICAgICB1bnNp
Z25lZCB0ZXh0RW5jb2RpbmdOYW1lTGVuZ3RoID0gbV90ZXh0RW5jb2RpbmdOYW1lLmxlbmd0aCgp
OwotICAgICAgICBpZiAodGV4dEVuY29kaW5nTmFtZUxlbmd0aCA+PSAyICYmIG1fdGV4dEVuY29k
aW5nTmFtZVswVV0gPT0gJyInICYmIG1fdGV4dEVuY29kaW5nTmFtZVt0ZXh0RW5jb2RpbmdOYW1l
TGVuZ3RoIC0gMV0gPT0gJyInKQotICAgICAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gbV90
ZXh0RW5jb2RpbmdOYW1lLnN0cmluZygpLnN1YnN0cmluZygxLCB0ZXh0RW5jb2RpbmdOYW1lTGVu
Z3RoIC0gMik7Ci0KLSAgICAgICAgaWYgKFttX25zUmVzcG9uc2UuZ2V0KCkgaXNLaW5kT2ZDbGFz
czpbTlNIVFRQVVJMUmVzcG9uc2UgY2xhc3NdXSkgewotICAgICAgICAgICAgTlNIVFRQVVJMUmVz
cG9uc2UgKmh0dHBSZXNwb25zZSA9IChOU0hUVFBVUkxSZXNwb25zZSAqKW1fbnNSZXNwb25zZS5n
ZXQoKTsKLQotICAgICAgICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IFtodHRwUmVzcG9uc2Ugc3Rh
dHVzQ29kZV07Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChpbml0TGV2ZWwgPCBBbGxG
aWVsZHMpIHsKLSAgICAgICAgICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2VSZWYgPSBD
RlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKFtodHRwUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2Vd
KTsKLQotICAgICAgICAgICAgICAgIC8vIEF2b2lkIGNhbGxpbmcgW05TVVJMUmVzcG9uc2UgYWxs
SGVhZGVyRmllbGRzXSB0byBtaW5pbWl6ZSBjb3B5aW5nICg8cmRhcjovL3Byb2JsZW0vMjY3Nzg4
NjM+KS4KLSAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBoZWFkZXJz
ID0gYWRvcHRDRihDRkhUVFBNZXNzYWdlQ29weUFsbEhlYWRlckZpZWxkcyhtZXNzYWdlUmVmKSk7
Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBjb21tb25IZWFkZXIgOiBjb21tb25IZWFkZXJG
aWVsZHMpIHsKLSAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgdmFsdWU7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChDRkRpY3Rpb25hcnlHZXRWYWx1ZUlmUHJlc2VudChoZWFkZXJzLmdl
dCgpLCBjb21tb25IZWFkZXIsIChjb25zdCB2b2lkICoqKSZ2YWx1ZSkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBtX2h0dHBIZWFkZXJGaWVsZHMuc2V0KGNvbW1vbkhlYWRlciwgdmFsdWUpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBtX2h0dHBTdGF0dXNDb2RlID0gMDsKLSAgICAgICAgCi0gICAgICAgIFtwb29sIGRyYWlu
XTsKKyAgICAgICAgLy8gU3RyaXBwaW5nIGRvdWJsZSBxdW90ZXMgYXMgYSB3b3JrYXJvdW5kIGZv
ciA8cmRhcjovL3Byb2JsZW0vODc1NzA4OD4sIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhhdCBpcyBm
aXhlZC4KKyAgICAgICAgbV90ZXh0RW5jb2RpbmdOYW1lID0gc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdEb3VibGVRdW90ZShbbV9uc1Jlc3BvbnNlLmdldCgpIHRleHRFbmNvZGluZ05hbWVdKTsKKyAg
ICAgICAgbV9odHRwU3RhdHVzQ29kZSA9IGh0dHBSZXNwb25zZSA/IFtodHRwUmVzcG9uc2Ugc3Rh
dHVzQ29kZV0gOiAwOwogICAgIH0KLQotICAgIGlmIChtX2luaXRMZXZlbCA8IEFsbEZpZWxkcyAm
JiBpbml0TGV2ZWwgPT0gQWxsRmllbGRzKSB7Ci0gICAgICAgIGlmIChbbV9uc1Jlc3BvbnNlLmdl
dCgpIGlzS2luZE9mQ2xhc3M6W05TSFRUUFVSTFJlc3BvbnNlIGNsYXNzXV0pIHsKLSAgICAgICAg
ICAgIE5TQXV0b3JlbGVhc2VQb29sKiBwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10g
aW5pdF07Ci0KLSAgICAgICAgICAgIE5TSFRUUFVSTFJlc3BvbnNlICpodHRwUmVzcG9uc2UgPSAo
TlNIVFRQVVJMUmVzcG9uc2UgKiltX25zUmVzcG9uc2UuZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
UmV0YWluUHRyPE5TU3RyaW5nPiBodHRwU3RhdHVzTGluZSA9IGFkb3B0TlMoY29weU5TVVJMUmVz
cG9uc2VTdGF0dXNMaW5lKGh0dHBSZXNwb25zZSkpKQotICAgICAgICAgICAgICAgIG1faHR0cFN0
YXR1c1RleHQgPSBleHRyYWN0UmVhc29uUGhyYXNlRnJvbUhUVFBTdGF0dXNMaW5lKGh0dHBTdGF0
dXNMaW5lLmdldCgpKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBtX2h0dHBT
dGF0dXNUZXh0ID0gQXRvbWljU3RyaW5nKCJPSyIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpOwotCi0gICAgICAgICAgICBDRkhUVFBNZXNzYWdlUmVmIG1lc3NhZ2VSZWYgPSBD
RlVSTFJlc3BvbnNlR2V0SFRUUFJlc3BvbnNlKFtodHRwUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2Vd
KTsKKyAgICBpZiAoaHR0cFJlc3BvbnNlKSB7CisgICAgICAgIGlmIChpbml0TGV2ZWwgPT0gQWxs
RmllbGRzKSB7CisgICAgICAgICAgICBhdXRvIG1lc3NhZ2VSZWYgPSBDRlVSTFJlc3BvbnNlR2V0
SFRUUFJlc3BvbnNlKFtodHRwUmVzcG9uc2UgX0NGVVJMUmVzcG9uc2VdKTsKKyAgICAgICAgICAg
IG1faHR0cFN0YXR1c1RleHQgPSBleHRyYWN0SFRUUFN0YXR1c1RleHQobWVzc2FnZVJlZik7CiAg
ICAgICAgICAgICBtX2h0dHBWZXJzaW9uID0gU3RyaW5nKGFkb3B0Q0YoQ0ZIVFRQTWVzc2FnZUNv
cHlWZXJzaW9uKG1lc3NhZ2VSZWYpKS5nZXQoKSkuY29udmVydFRvQVNDSUlVcHBlcmNhc2UoKTsK
LQotICAgICAgICAgICAgLy8gQXZvaWQgY2FsbGluZyBbTlNVUkxSZXNwb25zZSBhbGxIZWFkZXJG
aWVsZHNdIHRvIG1pbmltaXplIGNvcHlpbmcgKDxyZGFyOi8vcHJvYmxlbS8yNjc3ODg2Mz4pLgot
ICAgICAgICAgICAgUmV0YWluUHRyPENGRGljdGlvbmFyeVJlZj4gaGVhZGVycyA9IGFkb3B0Q0Yo
Q0ZIVFRQTWVzc2FnZUNvcHlBbGxIZWFkZXJGaWVsZHMobWVzc2FnZVJlZikpOwotICAgICAgICAg
ICAgQ0ZEaWN0aW9uYXJ5QXBwbHlGdW5jdGlvbihoZWFkZXJzLmdldCgpLCBhZGRUb0hUVFBIZWFk
ZXJNYXAsICZtX2h0dHBIZWFkZXJGaWVsZHMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBb
cG9vbCBkcmFpbl07Ci0gICAgICAgIH0KKyAgICAgICAgICAgIGluaXRpYWxpemVIVFRQSGVhZGVy
cyhPbmx5Q29tbW9uSGVhZGVyczo6Tm8sIGh0dHBSZXNwb25zZSwgbV9odHRwSGVhZGVyRmllbGRz
KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpbml0aWFsaXplSFRUUEhlYWRlcnMoT25s
eUNvbW1vbkhlYWRlcnM6OlllcywgaHR0cFJlc3BvbnNlLCBtX2h0dHBIZWFkZXJGaWVsZHMpOwog
ICAgIH0KIAogICAgIG1faW5pdExldmVsID0gaW5pdExldmVsOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>