<?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>109564</bug_id>
          
          <creation_ts>2013-02-12 03:58:06 -0800</creation_ts>
          <short_desc>[Qt][WK2] Layer QtWebIconDatabaseClient on the C API</short_desc>
          <delta_ts>2013-03-12 04:19:35 -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>New Bugs</component>
          <version>528+ (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>
          <dependson>109468</dependson>
    
    <dependson>111435</dependson>
          <blocked>109562</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jocelyn Turcotte">jturcotte</reporter>
          <assigned_to name="Jocelyn Turcotte">jturcotte</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830766</commentid>
    <comment_count>0</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-12 03:58:06 -0800</bug_when>
    <thetext>[Qt][WK2] Layer QtWebIconDatabaseClient on the C API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830792</commentid>
    <comment_count>1</comment_count>
      <attachid>187837</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-12 05:05:33 -0800</bug_when>
    <thetext>Created attachment 187837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830799</commentid>
    <comment_count>2</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-12 05:15:37 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=187837) [details]
&gt; Patch

There are two things that feel dirty about this patch:

- Going from WTF::String then to QUrl then back to WTF::String through WKUrlRef to keep the key to the icon for our pageUrl seems brittle to me. I feel that this could break at some point if QUrl isn&apos;t encoding to a string the same way that it was received. But I think that, at least, the code looks cleaner that way if we only look at the interface given by the WK2 C API.

- A change to updateID() happens on each icon update/creation. Any QML code fetching the icon() property of any of the view would then get a different URL, but only the matching pageUrl will have its iconChanged signal emitted. I don&apos;t see what this could break, but this stretches the contract that a property value change should be followed by a changed signal. In this case we ignore it since we know that this URL is only used to eventually fetch a QImage from the image provider, which we know didn&apos;t change.
Ideally it seems like the proper solution would be to ask people to set cache:false on the Image displaying icons. Even better would be to have a way from C++ to invalidate a QQuickPixmap without having to change the key URL pointing to it.

So also please tell me if you see any issue with those.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833074</commentid>
    <comment_count>3</comment_count>
      <attachid>188350</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-02-14 07:51:42 -0800</bug_when>
    <thetext>Created attachment 188350
Patch

Bug 109468 has been updated to use QString for the page URL. Use this and allow converting it to a WKUrlRef with WKURLCreateWithQString and WKURLCopyQString.
This addresses the first dirty point mentioned above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848792</commentid>
    <comment_count>4</comment_count>
      <attachid>188350</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-06 06:13:06 -0800</bug_when>
    <thetext>Comment on attachment 188350
Patch

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

&gt; Source/WebKit2/UIProcess/API/cpp/qt/WKURLQt.cpp:41
&gt; +    return QString(reinterpret_cast&lt;const QChar*&gt;(string.characters()), string.length());

You can just return string, WTF::String has a conversion operator to QString that is _very_ fast if the WTF::String was previously created from a QString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>848827</commentid>
    <comment_count>5</comment_count>
      <attachid>191746</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-06 07:01:06 -0800</bug_when>
    <thetext>Created attachment 191746
Patch

Use the existing implicit conversion from WTF::String in WKURLCopyQString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850086</commentid>
    <comment_count>6</comment_count>
      <attachid>191746</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-07 07:46:19 -0800</bug_when>
    <thetext>Comment on attachment 191746
Patch

LGTM :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850481</commentid>
    <comment_count>7</comment_count>
      <attachid>191746</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-03-07 14:22:13 -0800</bug_when>
    <thetext>Comment on attachment 191746
Patch

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

I don&apos;t know shit about the IconDatabase, I can&apos;t really review this :(
This is all using stable APIs so it is a positive change anyway.

I sign off on this, but make sure you get a real review :)

&gt; Source/WebKit2/ChangeLog:21
&gt; +          - The WKUrlRef behind the scene is a WTF::String and encoding it back and forth to
&gt; +            a QUrl can slightly change its string representation. Allow converting a WKUrlRef
&gt; +            to and from a QString to ensure this.

You should not rely on WKUrlRef being a String. This is an implementation detail and will hopefully change in the future.

&gt; Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp:52
&gt; +    url.setPath(QStringLiteral(&quot;/%1&quot;).arg(QtWebIconDatabaseClient::updateID()));

Wouldn&apos;t QString::setNum(QtWebIconDatabaseClient::updateID()) be better?

&gt; Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp:56
&gt; +    WKContextSetIconDatabasePath(context, adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage))).get());

I&apos;d split this to have &apos;adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage)))&apos; on its own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852243</commentid>
    <comment_count>8</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-11 06:48:13 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/WebKit2/ChangeLog:21
&gt; &gt; +          - The WKUrlRef behind the scene is a WTF::String and encoding it back and forth to
&gt; &gt; +            a QUrl can slightly change its string representation. Allow converting a WKUrlRef
&gt; &gt; +            to and from a QString to ensure this.
&gt; 
&gt; You should not rely on WKUrlRef being a String. This is an implementation detail and will hopefully change in the future.

The issue for now is that the URL is used as a key to access the icon database, so we need our representation to be equal char-by-char to the internal one.
If we need to handle this in a more complex way in the future we&apos;ll do so, but for now I think that we get a reliability benefit from relying on this implementation detail.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qwebiconimageprovider.cpp:52
&gt; &gt; +    url.setPath(QStringLiteral(&quot;/%1&quot;).arg(QtWebIconDatabaseClient::updateID()));
&gt; 
&gt; Wouldn&apos;t QString::setNum(QtWebIconDatabaseClient::updateID()) be better?

I used arg because of the prefixing slash (maybe you didn&apos;t see it).

&gt; &gt; Source/WebKit2/UIProcess/qt/QtWebIconDatabaseClient.cpp:56
&gt; &gt; +    WKContextSetIconDatabasePath(context, adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage))).get());
&gt; 
&gt; I&apos;d split this to have &apos;adoptWK(WKStringCreateWithQString(QtWebContext::preparedStoragePath(QtWebContext::IconDatabaseStorage)))&apos; on its own line.

Ok, done in bug #111435.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852266</commentid>
    <comment_count>9</comment_count>
      <attachid>191746</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-03-11 07:11:31 -0700</bug_when>
    <thetext>Comment on attachment 191746
Patch

Remember to add sign-off line :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853319</commentid>
    <comment_count>10</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2013-03-12 04:19:35 -0700</bug_when>
    <thetext>Committed r145518: &lt;http://trac.webkit.org/changeset/145518&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187837</attachid>
            <date>2013-02-12 05:05:33 -0800</date>
            <delta_ts>2013-02-14 07:51:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109564-20130212140202.patch</filename>
            <type>text/plain</type>
            <size>21208</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjFjMTcyY2Q2ZjI4NmQ3
MDg3NDVjYTM4MmYwNWYxNTg0YTFlMDdiOC4uYWQ5MDRiYjJhM2RmOTQxYzk2OTkzNWFjMmU3ZDll
MTM5YTY2NGEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU2IEBACiAyMDEzLTAyLTEyICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CiAKKyAgICAgICAgW1F0
XVtXSzJdIExheWVyIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50IG9uIHRoZSBDIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS0ljb25EYXRhYmFzZVF0LmNwcDogQWRkZWQu
CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUdldFFJbWFnZUZvclVSTCk6CisgICAgICAgICAg
LSBOZXcgQVBJIGFkZGVkIHRvIGdldCBhIFFJbWFnZSBmcm9tIHRoZSBJY29uRGF0YWJhc2UuCisg
ICAgICAgICAgICBCYXNlZCBvbiBXS0ljb25EYXRhYmFzZUNHLmgvY3BwCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNlUXQuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHA6CisgICAgICAgIChXS1VSTENyZWF0ZVdpdGhR
VXJsKToKKyAgICAgICAgICAtIFRoZSBwYWdlIFVSTCBhY3RzIGFzIGEga2V5IHRvIGZldGNoIHRo
ZSBpY29uIGZyb20gdGhlIEljb25EYXRhYmFzZS4KKyAgICAgICAgICAgIE1ha2Ugc3VyZSB0aGF0
IG91ciBjb252ZXJzaW9uIGZyb20gUVVybCBicmluZ3MgaXQgYmFjayB0byB0aGUgc2FtZSBzdHJp
bmcKKyAgICAgICAgICAgIHRoYXQgd2FzIHVzZWQgaW50ZXJuYWxseS4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlci5jcHA6CisgICAgICAgIChRV2ViSWNv
bkltYWdlUHJvdmlkZXI6Omljb25VUkxGb3JQYWdlVVJMSW5Db250ZXh0KToKKyAgICAgICAgICAt
IFRoZSBpY29uIFVSTCBpc24ndCBhY2Nlc3NpYmxlIGZvcm0gdGhlIEMgQVBJIGFuZCBzaG91bGRu
J3QgbmVlZCB0byBiZS4KKyAgICAgICAgICAgIFVzZSBhbiBJRCBpbmNyZW1lbnRlZCBvbiBlYWNo
IHVwZGF0ZSB0byB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgUU1MIEltYWdlIGNvbXBvbmVudC4K
KyAgICAgICAgKFFXZWJJY29uSW1hZ2VQcm92aWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAg
ICAtIFRoZSBJY29uRGF0YWJhc2Ugd2FzIHByZXZpb3VzbHkgYXNzdW1lZCB0byByZXNpemUgdGhl
IGltYWdlIHRvIHRoZSByZXF1ZXN0ZWQgc2l6ZSwKKyAgICAgICAgICAgIGJ1dCB0aGlzIHBhcmFt
ZXRlciBpcyBpZ25vcmVkLCBhcyBzdGF0ZWQgaW4gYSBjb21tZW50IGluIFdlYkljb25EYXRhYmFz
ZTo6aW1hZ2VGb3JQYWdlVVJMLgorICAgICAgICAgICAgRXhwbGljaXRlbHkgZG8gdGhlIHJlc2l6
ZSBhZnRlciBmZXRjaGluZyB0aGUgb3JpZ2luYWwgaWNvbiB0byBhbHNvIGJlIGFibGUgdG8gcmVw
b3J0CisgICAgICAgICAgICB0aGUgb3JpZ2luYWwgc2l6ZSBwcm9wZXJseSB0byBRdFF1aWNrLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2Zhdklj
b25Mb2FkLnFtbDoKKyAgICAgICAgICAtIFNldCB0aGUgaW1hZ2UgdG8gbG9hZCBhc3luY2hyb25v
dXNseSB0byBmdXJ0aGVyIHRlc3QgdGhlIHBvc3NpYmlsaXR5IG9mIHRocmVhZGluZyBpc3N1ZXMK
KyAgICAgICAgICAgIGluIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uSW1hZ2VGb3JQYWdl
VVJMCisgICAgICAgICAgLSBBZGQgYSBmZXcgYmFycmllcnMgdG8gZml4IHNvbWUgaXNzdWVzIHdo
ZXJlIHRoZSBsb2FkIHN1Y2NlZWRlZCBzaWduYWwgd291bGQgYmUgd3JvbmdseQorICAgICAgICAg
ICAgY2F0Y2hlZCBieSBpbml0KCkgYmVmb3JlIHRoZSBuZXh0IHRlc3QuCisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViQ29udGV4
dDo6UXRXZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJh
c2VDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJJ
Y29uRGF0YWJhc2VDbGllbnQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6On5RdFdlYkljb25EYXRhYmFzZUNsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Ojp1cGRhdGVJRCk6Cisg
ICAgICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFuZ2VJY29uRm9y
UGFnZVVSTCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29u
SW1hZ2VGb3JQYWdlVVJMKToKKyAgICAgICAgICAtIFJlbW92ZSB0aGUgTXV0ZXguIFRoaXMgbXV0
ZXggd2FzIGNvbXBsZXRlbHkgdXNlbGVzcyBnaXZlbiB0aGF0IGl0IHdvdWxkIG9ubHkKKyAgICAg
ICAgICAgIGJlIGxvY2tlZCBmcm9tIG9uZSB0aHJlYWQgYW55d2F5LiBTaW5jZSB0aGUgSWNvbkRh
dGFiYXNlIHJ1bnMgaW4gaXRzIG93biB0aHJlYWQsCisgICAgICAgICAgICBpdCBhbHJlYWR5IGlz
IHRocmVhZC1zYWZlIHRvIGFjY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6UXRXZWJJY29uRGF0YWJh
c2VDbGllbnQ6OnJldGFpbkljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJJ
Y29uRGF0YWJhc2VDbGllbnQ6OnJlbGVhc2VJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgIChRdFdlYkljb25E
YXRhYmFzZUNsaWVudCk6CisgICAgICAgICogV2ViS2l0Mi5wcmk6CisKKzIwMTMtMDItMTIgIEpv
Y2VseW4gVHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KKwogICAgICAgICBb
UXRdW1dLMl0gTGF5ZXIgUXREb3dubG9hZE1hbmFnZXIgb24gdGhlIEMgQVBJCiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk1NjIKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkK
aW5kZXggYTIxYzY3M2JlODc2OTVmZDM4ZjIyM2YzYjVmOGE4Y2RkNDdhNjM2YS4uZjE2OGMyNDk2
YWMzNGU3MzYxZjVlMzQxMjg5YWVmY2MwN2I4MmIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCkBAIC0xOTYsNiAr
MTk2LDcgQEAgSEVBREVSUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmgg
XAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XZWJLaXQyX0MuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9D
L3F0L1dLTmF0aXZlRXZlbnQuaCBcCisgICAgVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFi
YXNlUXQuaCBcCiAgICAgVUlQcm9jZXNzL0FQSS9jcHAvV0tSZXRhaW5QdHIuaCBcCiAgICAgVUlQ
cm9jZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5oIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1VSTFF0LmggXApAQCAtNTQ1LDYgKzU0Niw3IEBAIFNPVVJDRVMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLVGV4dENoZWNrZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24u
Y3BwIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tJY29uRGF0YWJhc2VRdC5jcHAgXAogICAg
IFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLU3RyaW5nUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJ
L2NwcC9xdC9XS1VSTFF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9xdC9yYXcvcXJhd3dlYnZp
ZXcuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9xdC9X
S0ljb25EYXRhYmFzZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9xdC9X
S0ljb25EYXRhYmFzZVF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWU1YzZmNmRlNmI5ODIwYjNhZjgxYTE2
Mjg2NGM2ZThiYzc5NmU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNlUXQuY3BwCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KS4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQXdCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tJY29uRGF0YWJh
c2VRdC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tTaGFyZWRBUElD
YXN0LmgiCisjaW5jbHVkZSAiV2ViSWNvbkRhdGFiYXNlLmgiCisjaW5jbHVkZSA8UVBpeG1hcD4K
KwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitR
SW1hZ2UgV0tJY29uRGF0YWJhc2VUcnlHZXRRSW1hZ2VGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYg
aWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiB1cmxSZWYpCit7CisgICAgUVBpeG1hcCogcGl4bWFw
ID0gdG9JbXBsKGljb25EYXRhYmFzZVJlZiktPm5hdGl2ZUltYWdlRm9yUGFnZVVSTCh0b1dURlN0
cmluZyh1cmxSZWYpKTsKKyAgICByZXR1cm4gcGl4bWFwID8gcGl4bWFwLT50b0ltYWdlKCkgOiBR
SW1hZ2UoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9x
dC9XS0ljb25EYXRhYmFzZVF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvcXQv
V0tJY29uRGF0YWJhc2VRdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0NzJkZmI5ODk0NDljNGVlMmE4MmQ0MDE5
OTI3OTMxMGVjMTUzYzYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvcXQvV0tJY29uRGF0YWJhc2VRdC5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgRGlnaWEgUGxjIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4K
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV0tJY29uRGF0YWJhc2VRdF9oCisjZGVmaW5lIFdLSWNvbkRhdGFi
YXNlUXRfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLR2VvbWV0cnkuaD4KKworUVRfQkVHSU5fTkFNRVNQQUNFCitjbGFzcyBRSW1hZ2U7CitRVF9F
TkRfTkFNRVNQQUNFCisKK1dLX0VYUE9SVCBRSW1hZ2UgV0tJY29uRGF0YWJhc2VUcnlHZXRRSW1h
Z2VGb3JVUkwoV0tJY29uRGF0YWJhc2VSZWYgaWNvbkRhdGFiYXNlLCBXS1VSTFJlZiB1cmwpOwor
CisjZW5kaWYgLyogV0tJY29uRGF0YWJhc2VRdF9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwCmluZGV4IGY5MTExZjdlYThhOGIxMTJiZDA0
YzM1YzRhNDQwZDZhMTAyMjNhYjEuLmQwNjEyNzc4OTc5NDlkODA2MjA0ZDIzZjhjMGY1NTA1ZTYz
ZjQ0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dL
VVJMUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJM
UXQuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKIFdLVVJM
UmVmIFdLVVJMQ3JlYXRlV2l0aFFVcmwoY29uc3QgUVVybCYgcVVSTCkKIHsKLSAgICBXVEY6OlN0
cmluZyB1cmxTdHJpbmcocVVSTC50b1N0cmluZygpKTsKKyAgICBXVEY6OlN0cmluZyB1cmxTdHJp
bmcocVVSTC50b1N0cmluZyhRVXJsOjpGdWxseUVuY29kZWQpKTsKICAgICByZXR1cm4gdG9Db3Bp
ZWRVUkxBUEkodXJsU3RyaW5nKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXIuY3BwCmluZGV4IDk1NTdjMjBi
ZWU2MDg4NjUyOGIzYzk0ZmIwYzQ0OGY1ZmYyZDQ3MjAuLjE0NjlhNjdiODA1NWM3MjIxZWUxNTRh
ZThmODAyNGM0ZWU3ZjFhMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlci5jcHAKQEAgLTI0LDggKzI0LDYgQEAK
ICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIgogI2luY2x1ZGUgPFF0Q29yZS9R
VXJsPgogI2luY2x1ZGUgPFF0R3VpL1FJbWFnZT4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdI
YXNoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CiAKQEAgLTQxLDE2ICszOSwxNyBAQCBRV2ViSWNvbkltYWdlUHJvdmlkZXI6On5R
V2ViSWNvbkltYWdlUHJvdmlkZXIoKQogUVVybCBRV2ViSWNvbkltYWdlUHJvdmlkZXI6Omljb25V
UkxGb3JQYWdlVVJMSW5Db250ZXh0KGNvbnN0IFFVcmwmIHBhZ2VVUkwsIFF0V2ViQ29udGV4dCog
Y29udGV4dCkKIHsKICAgICBRdFdlYkljb25EYXRhYmFzZUNsaWVudCogaWNvbkRhdGFiYXNlID0g
Y29udGV4dC0+aWNvbkRhdGFiYXNlKCk7Ci0gICAgUVVybCBpY29uVVJMID0gaWNvbkRhdGFiYXNl
LT5pY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKIAotICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkK
KyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgaW1hZ2UgZGF0YSBpcyBhY3R1YWxseSBhdmFpbGFibGUg
YmVmb3JlIHJlcG9ydGluZyBiYWNrCisgICAgLy8gYSB1cmwsIHNpbmNlIGNsaWVudHMgYXNzdW1l
IHRoYXQgdGhlIHVybCBjYW4gYmUgdXNlZCBkaXJlY3RseS4KKyAgICBpZiAoaWNvbkRhdGFiYXNl
LT5pY29uSW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwpLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
UVVybCgpOwogCiAgICAgUVVybCB1cmw7CiAgICAgdXJsLnNldFNjaGVtZShRU3RyaW5nTGl0ZXJh
bCgiaW1hZ2UiKSk7CiAgICAgdXJsLnNldEhvc3QoUVdlYkljb25JbWFnZVByb3ZpZGVyOjppZGVu
dGlmaWVyKCkpOwotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IFFNTCBkb2Vzbid0IHNob3cgY2FjaGVk
IHZlcnNpb25zIG9mIHRoZSBwcmV2aW91cyBpY29uIGlmIHRoZSBpY29uIGxvY2F0aW9uIGNoYW5n
ZWQuCi0gICAgdXJsLnNldFBhdGgoUUxhdGluMUNoYXIoJy8nKSArIFFTdHJpbmc6Om51bWJlcihX
VEY6OlN0cmluZ0hhc2g6Omhhc2goaWNvblVSTC50b1N0cmluZygpKSkpOworICAgIC8vIE1ha2Ug
c3VyZSB0aGF0IFFNTCBkb2Vzbid0IHNob3cgYSBjYWNoZWQgcHJldmlvdXMgdmVyc2lvbiBvZiB0
aGUgaWNvbiBhZnRlciBpdCBjaGFuZ2VkLgorICAgIHVybC5zZXRQYXRoKFFTdHJpbmdMaXRlcmFs
KCIvJTEiKS5hcmcoUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6OnVwZGF0ZUlEKCkpKTsKIAogICAg
IC8vIEZJWE1FOiBVc2UgUVVybDo6RGVjb2RlZE1vZGUgd2hlbiBsYW5kZWQgaW4gUXQKICAgICB1
cmwuc2V0RnJhZ21lbnQoUVN0cmluZzo6ZnJvbUxhdGluMShRQnl0ZUFycmF5KHBhZ2VVUkwudG9F
bmNvZGVkKCkpLnRvQmFzZTY0KCkpKTsKQEAgLTY4LDE0ICs2NywxNiBAQCBRSW1hZ2UgUVdlYklj
b25JbWFnZVByb3ZpZGVyOjpyZXF1ZXN0SW1hZ2UoY29uc3QgUVN0cmluZyYgaWQsIFFTaXplKiBz
aXplLCBjb25zdAogICAgIFFVcmwgcGFnZVVSTCA9IFFVcmw6OmZyb21FbmNvZGVkKFFCeXRlQXJy
YXk6OmZyb21CYXNlNjQoaWQubWlkUmVmKGlkLmluZGV4T2YoJyMnKSArIDEpLnRvTGF0aW4xKCkp
KTsKIAogICAgIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KiBpY29uRGF0YWJhc2UgPSBRdFdlYkNv
bnRleHQ6OmRlZmF1bHRDb250ZXh0KCktPmljb25EYXRhYmFzZSgpOwotICAgIGlmICghaWNvbkRh
dGFiYXNlKQotICAgICAgICByZXR1cm4gUUltYWdlKCk7CisgICAgUV9BU1NFUlQoaWNvbkRhdGFi
YXNlKTsKIAotICAgIFFJbWFnZSBpY29uID0gcmVxdWVzdGVkU2l6ZS5pc1ZhbGlkKCkgPyBpY29u
RGF0YWJhc2UtPmljb25JbWFnZUZvclBhZ2VVUkwocGFnZVVSTCwgcmVxdWVzdGVkU2l6ZSkgOiBp
Y29uRGF0YWJhc2UtPmljb25JbWFnZUZvclBhZ2VVUkwocGFnZVVSTCk7Ci0gICAgQVNTRVJUKCFp
Y29uLmlzTnVsbCgpKTsKKyAgICBRSW1hZ2UgaWNvbiA9IGljb25EYXRhYmFzZS0+aWNvbkltYWdl
Rm9yUGFnZVVSTChwYWdlVVJMKTsKKyAgICBRX0FTU0VSVCghaWNvbi5pc051bGwoKSk7CiAKICAg
ICBpZiAoc2l6ZSkKICAgICAgICAgKnNpemUgPSBpY29uLnNpemUoKTsKIAorICAgIGlmIChyZXF1
ZXN0ZWRTaXplLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGljb24uc2NhbGVkKHJlcXVlc3Rl
ZFNpemUsIFF0OjpLZWVwQXNwZWN0UmF0aW8sIFF0OjpTbW9vdGhUcmFuc2Zvcm1hdGlvbik7CisK
ICAgICByZXR1cm4gaWNvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaAppbmRleCAxZjgwYzhhZTgzOWE3
YzI0N2NlM2FlZTk0M2MzODMxY2ZiZDVhYzdhLi44YmVlMTY1YmFjNDc5YWU1ODk0NWE4YzY1YmFm
ZDNlNjIxMzg2YjNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJpY29uaW1hZ2Vwcm92aWRlcl9wLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXJfcC5oCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5j
bHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUgPFFTdHJpbmc+CiAjaW5jbHVkZSA8UXRR
dWljay9RUXVpY2tJbWFnZVByb3ZpZGVyPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBjbGFzcyBRdFdlYkNvbnRleHQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZp
ZXcvdHN0X2Zhdkljb25Mb2FkLnFtbCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmF2SWNvbkxvYWQucW1sCmluZGV4IDZmMDg1ODY5
NjdmZjcwOWRkZTRjNDE0NmNjNzk1N2VhODdkNmNjZjguLjQ0MzdiMTBhNDUzZWY2ZGQ2M2IyZWUz
ZmU1ZGJmOTM5ZDQ1YTVlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmF2SWNvbkxvYWQucW1sCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3Rf
ZmF2SWNvbkxvYWQucW1sCkBAIC0xNCw2ICsxNCw3IEBAIFRlc3RXZWJWaWV3IHsKIAogICAgIElt
YWdlIHsKICAgICAgICAgaWQ6IGZhdmljb24KKyAgICAgICAgYXN5bmNocm9ub3VzOiB0cnVlCiAg
ICAgICAgIHNvdXJjZTogd2ViVmlldy5pY29uCiAgICAgfQogCkBAIC0yNiw4ICsyNyw4IEBAIFRl
c3RXZWJWaWV3IHsKICAgICAgICAgICAgIGlmICh3ZWJWaWV3Lmljb24gIT0gJycpIHsKICAgICAg
ICAgICAgICAgICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUgZmlyc3QgdGVzdCwgdGhlbiBsb2FkIGEg
YmxhbmsgcGFnZSB3aXRob3V0IGZhdmljb24sIHJlc3RvcmluZyB0aGUgaW5pdGlhbCBzdGF0ZS4K
ICAgICAgICAgICAgICAgICB3ZWJWaWV3LnVybCA9ICdhYm91dDpibGFuaycKLSAgICAgICAgICAg
ICAgICBzcHkud2FpdCgpCiAgICAgICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxv
YWRTdWNjZWVkZWQoKSkKKyAgICAgICAgICAgICAgICBzcHkud2FpdCgpCiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBzcHkuY2xlYXIoKQogICAgICAgICB9CkBAIC0zNiw2ICszNyw3IEBAIFRl
c3RXZWJWaWV3IHsKICAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQogICAgICAgICAg
ICAgdmFyIHVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZmF2aWNvbi5odG1sIikKICAg
ICAgICAgICAgIHdlYlZpZXcudXJsID0gdXJsCisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53
YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQogICAgICAgICAgICAgc3B5LndhaXQoKQogICAgICAgICAg
ICAgY29tcGFyZShzcHkuY291bnQsIDEpCiAgICAgICAgICAgICBjb21wYXJlKGZhdmljb24ud2lk
dGgsIDQ4KQpAQCAtNDYsNiArNDgsNyBAQCBUZXN0V2ViVmlldyB7CiAgICAgICAgICAgICBjb21w
YXJlKHNweS5jb3VudCwgMCkKICAgICAgICAgICAgIHZhciB1cmwgPSBRdC5yZXNvbHZlZFVybCgi
Li4vY29tbW9uL2Zhdmljb24yLmh0bWw/ZmF2aWNvbj1sb2FkIHNob3VsZCB3b3JrIHdpdGgjd2hp
dGVzcGFjZSEiKQogICAgICAgICAgICAgd2ViVmlldy51cmwgPSB1cmwKKyAgICAgICAgICAgIHZl
cmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCiAgICAgICAgICAgICBzcHkud2Fp
dCgpCiAgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMSkKICAgICAgICAgICAgIGNvbXBh
cmUoZmF2aWNvbi53aWR0aCwgMTYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YkNvbnRleHQuY3BwCmluZGV4IDNkN2JjZThhOTU0OWZiNzU3MmI2MzkxZmRjNmUwNTAwYWRhM2Yw
NGEuLmUwNTk5NTY3MTcwZTczNDc4MzIxZjdjNGJlY2FjNzE1MDE0ODU1YzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwCkBAIC0xMTMsNyArMTEzLDcg
QEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZUNvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0Nv
bnRleHRSZWYgY29udGV4dCkKIFF0V2ViQ29udGV4dDo6UXRXZWJDb250ZXh0KFdLQ29udGV4dFJl
ZiBjb250ZXh0KQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2Rvd25sb2FkTWFu
YWdlcihuZXcgUXREb3dubG9hZE1hbmFnZXIoY29udGV4dCkpCi0gICAgLCBtX2ljb25EYXRhYmFz
ZShuZXcgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQodG9JbXBsKGNvbnRleHQpKSkKKyAgICAsIG1f
aWNvbkRhdGFiYXNlKG5ldyBRdFdlYkljb25EYXRhYmFzZUNsaWVudChjb250ZXh0KSkKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRh
YmFzZUNsaWVudC5jcHAKaW5kZXggNDk3OTk2OTUxYjMwNDU2MjY1NmQyMDdiOGZkZGFlM2NlY2I3
ZDJlZC4uZDFhM2E1ZTI1M2U0OWY4MzI3ZThhMDk1ZWM5MjQ3YjQ0ZThhMDY3NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGll
bnQuY3BwCkBAIC0yMCw4OSArMjAsNjggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIgogCi0jaW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNs
dWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiV0tVUkxR
dC5oIgotI2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2Uu
aCIKICNpbmNsdWRlIDxRdENvcmUvUUhhc2g+CiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAj
aW5jbHVkZSA8UXRDb3JlL1FVcmw+CiAjaW5jbHVkZSA8UXRHdWkvUUltYWdlPgorI2luY2x1ZGUg
PFdLQ29udGV4dC5oPgorI2luY2x1ZGUgPFdLSWNvbkRhdGFiYXNlUXQuaD4KKyNpbmNsdWRlIDxX
S1JldGFpblB0ci5oPgorI2luY2x1ZGUgPFdLVVJMUXQuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK3N0YXRpYyB1bnNpZ25lZCBzX3VwZGF0ZUlkID0gMDsKKwogc3RhdGljIGlubGluZSBRdFdl
Ykljb25EYXRhYmFzZUNsaWVudCogdG9RdFdlYkljb25EYXRhYmFzZUNsaWVudChjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewogICAgIEFTU0VSVChjbGllbnRJbmZvKTsKICAgICByZXR1cm4gcmVp
bnRlcnByZXRfY2FzdDxRdFdlYkljb25EYXRhYmFzZUNsaWVudCo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKIH0KIAotUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6OlF0V2ViSWNvbkRh
dGFiYXNlQ2xpZW50KFdlYkNvbnRleHQgKmNvbnRleHQpCitRdFdlYkljb25EYXRhYmFzZUNsaWVu
dDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiB7Ci0gICAg
Ly8gVGhlIHNldHRlciBjYWxscyB0aGUgZ2V0dGVyIGhlcmUgYXMgaXQgdHJpZ2dlcnMgdGhlIHN0
YXJ0dXAgb2YgdGhlIGljb24gZGF0YWJhc2UuCi0gICAgaWYgKCFjb250ZXh0LT5pY29uRGF0YWJh
c2UoKS0+aXNPcGVuKCkpCi0gICAgICAgIGNvbnRleHQtPnNldEljb25EYXRhYmFzZVBhdGgoY29u
dGV4dC0+aWNvbkRhdGFiYXNlUGF0aCgpKTsKLSAgICBtX2ljb25EYXRhYmFzZSA9IGNvbnRleHQt
Pmljb25EYXRhYmFzZSgpOworICAgIG1faWNvbkRhdGFiYXNlID0gV0tDb250ZXh0R2V0SWNvbkRh
dGFiYXNlKGNvbnRleHQpOwogCiAgICAgV0tJY29uRGF0YWJhc2VDbGllbnQgaWNvbkRhdGFiYXNl
Q2xpZW50OwogICAgIG1lbXNldCgmaWNvbkRhdGFiYXNlQ2xpZW50LCAwLCBzaXplb2YoV0tJY29u
RGF0YWJhc2VDbGllbnQpKTsKICAgICBpY29uRGF0YWJhc2VDbGllbnQudmVyc2lvbiA9IGtXS0lj
b25EYXRhYmFzZUNsaWVudEN1cnJlbnRWZXJzaW9uOwogICAgIGljb25EYXRhYmFzZUNsaWVudC5j
bGllbnRJbmZvID0gdGhpczsKICAgICBpY29uRGF0YWJhc2VDbGllbnQuZGlkQ2hhbmdlSWNvbkZv
clBhZ2VVUkwgPSBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTDsKLSAgICBXS0ljb25EYXRhYmFzZVNl
dEljb25EYXRhYmFzZUNsaWVudCh0b0FQSShtX2ljb25EYXRhYmFzZS5nZXQoKSksICZpY29uRGF0
YWJhc2VDbGllbnQpOworICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KG1f
aWNvbkRhdGFiYXNlLCAmaWNvbkRhdGFiYXNlQ2xpZW50KTsKKyAgICBXS0ljb25EYXRhYmFzZU9w
ZW4obV9pY29uRGF0YWJhc2UpOwogfQogCiBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6flF0V2Vi
SWNvbkRhdGFiYXNlQ2xpZW50KCkKIHsKLSAgICBtX2ljb25EYXRhYmFzZS0+Y2xvc2UoKTsKLSAg
ICBXS0ljb25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudCh0b0FQSShtX2ljb25EYXRhYmFz
ZS5nZXQoKSksIDApOworICAgIFdLSWNvbkRhdGFiYXNlQ2xvc2UobV9pY29uRGF0YWJhc2UpOwor
ICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KG1faWNvbkRhdGFiYXNlLCAw
KTsKIH0KIAotdm9pZCBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbkZvclBh
Z2VVUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkwsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCit1bnNpZ25lZCBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6dXBkYXRlSUQoKQog
ewotICAgIGVtaXQgdG9RdFdlYkljb25EYXRhYmFzZUNsaWVudChjbGllbnRJbmZvKS0+aWNvbkNo
YW5nZWRGb3JQYWdlVVJMKFdLVVJMQ29weVFVcmwocGFnZVVSTCkpOworICAgIHJldHVybiBzX3Vw
ZGF0ZUlkOwogfQogCi1RVXJsIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uRm9yUGFnZVVS
TChjb25zdCBRVXJsJiBwYWdlVVJMKQordm9pZCBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6ZGlk
Q2hhbmdlSWNvbkZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkws
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgU3RyaW5nIGljb25VUkw7Ci0gICAgbV9p
Y29uRGF0YWJhc2UtPnN5bmNocm9ub3VzSWNvblVSTEZvclBhZ2VVUkwocGFnZVVSTC50b1N0cmlu
ZyhRVXJsOjpGdWxseUVuY29kZWQpLCBpY29uVVJMKTsKLQotICAgIGlmIChpY29uVVJMLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIFFVcmwoKTsKLQotICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBp
bWFnZSBkYXRhIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBiZWZvcmUgcmVwb3J0aW5nIGJhY2sKLSAg
ICAvLyBhIHVybCwgc2luY2UgY2xpZW50cyBhc3N1bWUgdGhhdCB0aGUgdXJsIGNhbiBiZSB1c2Vk
IGRpcmVjdGx5LgotICAgIFdlYkNvcmU6OkltYWdlKiBpY29uSW1hZ2UgPSBtX2ljb25EYXRhYmFz
ZS0+aW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwudG9TdHJpbmcoUVVybDo6RnVsbHlFbmNvZGVkKSk7
Ci0gICAgaWYgKCFpY29uSW1hZ2UgfHwgaWNvbkltYWdlLT5pc051bGwoKSkKLSAgICAgICAgcmV0
dXJuIFFVcmwoKTsKLQotICAgIHJldHVybiBRVXJsKGljb25VUkwpOworICAgICsrc191cGRhdGVJ
ZDsKKyAgICBlbWl0IHRvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQoY2xpZW50SW5mbyktPmljb25D
aGFuZ2VkRm9yUGFnZVVSTChXS1VSTENvcHlRVXJsKHBhZ2VVUkwpKTsKIH0KIAotUUltYWdlIFF0
V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFFVcmwmIHBh
Z2VVUkwsIGNvbnN0IFFTaXplJiBpY29uU2l6ZSkKK1FJbWFnZSBRdFdlYkljb25EYXRhYmFzZUNs
aWVudDo6aWNvbkltYWdlRm9yUGFnZVVSTChjb25zdCBRVXJsJiBwYWdlVVJMKQogewotICAgIE11
dGV4TG9ja2VyIGxvY2tlcihtX2ltYWdlTG9jayk7Ci0KLSAgICBXZWJDb3JlOjpJbnRTaXplIHNp
emUoaWNvblNpemUud2lkdGgoKSwgaWNvblNpemUuaGVpZ2h0KCkpOwotCi0gICAgUVBpeG1hcCog
bmF0aXZlSW1hZ2UgPSBtX2ljb25EYXRhYmFzZS0+bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHBhZ2VV
UkwudG9TdHJpbmcoUVVybDo6RnVsbHlFbmNvZGVkKSwgc2l6ZSk7Ci0gICAgaWYgKCFuYXRpdmVJ
bWFnZSkKLSAgICAgICAgcmV0dXJuIFFJbWFnZSgpOwotCi0gICAgcmV0dXJuIG5hdGl2ZUltYWdl
LT50b0ltYWdlKCk7CisgICAgcmV0dXJuIFdLSWNvbkRhdGFiYXNlVHJ5R2V0UUltYWdlRm9yVVJM
KG1faWNvbkRhdGFiYXNlLCBhZG9wdFdLKFdLVVJMQ3JlYXRlV2l0aFFVcmwocGFnZVVSTCkpLmdl
dCgpKTsKIH0KIAogdm9pZCBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6cmV0YWluSWNvbkZvclBh
Z2VVUkwoY29uc3QgUVVybCYgcGFnZVVSTCkKIHsKLSAgICBtX2ljb25EYXRhYmFzZS0+cmV0YWlu
SWNvbkZvclBhZ2VVUkwocGFnZVVSTC50b1N0cmluZyhRVXJsOjpGdWxseUVuY29kZWQpKTsKKyAg
ICBXS0ljb25EYXRhYmFzZVJldGFpbkljb25Gb3JVUkwobV9pY29uRGF0YWJhc2UsIGFkb3B0V0so
V0tVUkxDcmVhdGVXaXRoUVVybChwYWdlVVJMKSkuZ2V0KCkpOwogfQogCiB2b2lkIFF0V2ViSWNv
bkRhdGFiYXNlQ2xpZW50OjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgUVVybCYgcGFnZVVS
TCkKIHsKLSAgICBtX2ljb25EYXRhYmFzZS0+cmVsZWFzZUljb25Gb3JQYWdlVVJMKHBhZ2VVUkwu
dG9TdHJpbmcoUVVybDo6RnVsbHlFbmNvZGVkKSk7CisgICAgV0tJY29uRGF0YWJhc2VSZWxlYXNl
SWNvbkZvclVSTChtX2ljb25EYXRhYmFzZSwgYWRvcHRXSyhXS1VSTENyZWF0ZVdpdGhRVXJsKHBh
Z2VVUkwpKS5nZXQoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuaAppbmRl
eCBiYTUwOWI3NDJkOWMwOWE2YWRhNDRlNmIxMzdlNjUzYTJmNzQ5MjViLi5kNjQxZjQ2ZWIyMGI3
ZjVjNzhlZTMyMThmOTY3NmUxNmY5MjczOGM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuaApAQCAtMjEsMTIgKzIxLDkg
QEAKICNpZm5kZWYgUXRXZWJJY29uRGF0YWJhc2VDbGllbnRfaAogI2RlZmluZSBRdFdlYkljb25E
YXRhYmFzZUNsaWVudF9oCiAKLSNpbmNsdWRlICJXS0ljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUg
InF3ZWJraXRnbG9iYWwuaCIKICNpbmNsdWRlIDxRdENvcmUvUU9iamVjdD4KLSNpbmNsdWRlIDxR
dENvcmUvUVNpemU+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJl
YWRpbmcuaD4KKyNpbmNsdWRlIDxXS0ljb25EYXRhYmFzZS5oPgogCiBRVF9CRUdJTl9OQU1FU1BB
Q0UKIGNsYXNzIFFJbWFnZTsKQEAgLTM1LDI5ICszMiwyNiBAQCBRVF9FTkRfTkFNRVNQQUNFCiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1jbGFzcyBXZWJDb250ZXh0OwotY2xhc3MgV2ViSWNvbkRh
dGFiYXNlOwotCiBjbGFzcyBRdFdlYkljb25EYXRhYmFzZUNsaWVudCA6IHB1YmxpYyBRT2JqZWN0
IHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6Ci0gICAgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQo
V2ViQ29udGV4dCopOworICAgIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KFdLQ29udGV4dFJlZik7
CiAgICAgflF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KCk7CiAKLSAgICBRVXJsIGljb25Gb3JQYWdl
VVJMKGNvbnN0IFFVcmwmIHBhZ2VVUkwpOwotICAgIFFJbWFnZSBpY29uSW1hZ2VGb3JQYWdlVVJM
KGNvbnN0IFFVcmwmIHBhZ2VVUkwsIGNvbnN0IFFTaXplJiBpY29uU2l6ZSA9IFFTaXplKDMyLCAz
MikpOworICAgIFFJbWFnZSBpY29uSW1hZ2VGb3JQYWdlVVJMKGNvbnN0IFFVcmwmKTsKIAogICAg
IHZvaWQgcmV0YWluSWNvbkZvclBhZ2VVUkwoY29uc3QgUVVybCYpOwogICAgIHZvaWQgcmVsZWFz
ZUljb25Gb3JQYWdlVVJMKGNvbnN0IFFVcmwmKTsKIAorICAgIHN0YXRpYyB1bnNpZ25lZCB1cGRh
dGVJRCgpOworCiBwdWJsaWM6CiAgICAgUV9TSUdOQUwgdm9pZCBpY29uQ2hhbmdlZEZvclBhZ2VV
UkwoY29uc3QgUVVybCYgcGFnZVVSTCk7CiAKIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgZGlk
Q2hhbmdlSWNvbkZvclBhZ2VVUkwoV0tJY29uRGF0YWJhc2VSZWYsIFdLVVJMUmVmIHBhZ2VVUkws
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkljb25EYXRh
YmFzZT4gbV9pY29uRGF0YWJhc2U7Ci0gICAgTXV0ZXggbV9pbWFnZUxvY2s7CisgICAgV0tJY29u
RGF0YWJhc2VSZWYgbV9pY29uRGF0YWJhc2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0Mi5wcmkKaW5kZXggNWMzNWRhNDE0Yzg3Mzk4NGVlZTBjYjI1NjQyMmZlMDk2MzgyOGY3
MS4uNWFmZjY2ZTE1MTBkOWFhNTc0MzE3MzJlMjhjMTUyZjYxNWM4ZDg1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViS2l0Mi5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi5w
cmkKQEAgLTI4LDYgKzI4LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9T
aGFyZWQvcXQgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MgXAogICAgICQkU09VUkNFX0RJ
Ui9VSVByb2Nlc3MvQVBJL0MgXAorICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvQVBJL0MvcXQg
XAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvQVBJL2NwcCBcCiAgICAgJCRTT1VSQ0VfRElS
L1VJUHJvY2Vzcy9BUEkvY3BwL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0FQSS9x
dCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188350</attachid>
            <date>2013-02-14 07:51:42 -0800</date>
            <delta_ts>2013-03-06 07:01:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109564-20130214164809.patch</filename>
            <type>text/plain</type>
            <size>22559</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggN2RhYTgwMWUzNTI1MWU0
MWVmZjYyY2U0NTUxMzM1YmY0YWE4ZWVkNi4uZDYxN2NmMjE5YWUxOTdmNjJhMTZhODc0Zjk4MzE0
OTExMzIzZGUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAyLTE0ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIExheWVyIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50IG9uIHRoZSBDIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS0ljb25EYXRhYmFzZVF0LmNwcDogQWRkZWQu
CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUdldFFJbWFnZUZvclVSTCk6CisgICAgICAgICAg
LSBOZXcgQVBJIGFkZGVkIHRvIGdldCBhIFFJbWFnZSBmcm9tIHRoZSBJY29uRGF0YWJhc2UuCisg
ICAgICAgICAgICBCYXNlZCBvbiBXS0ljb25EYXRhYmFzZUNHLmgvY3BwCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNlUXQuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHA6CisgICAgICAgIChXS1VSTENyZWF0ZVdpdGhR
U3RyaW5nKToKKyAgICAgICAgKFdLVVJMQ29weVFTdHJpbmcpOgorICAgICAgICAoV0tVUkxDcmVh
dGVXaXRoUVVybCk6CisgICAgICAgIChXS1VSTENvcHlRVXJsKToKKyAgICAgICAgICAtIFRoZSBX
S1VybFJlZiBiZWhpbmQgdGhlIHNjZW5lIGlzIGEgV1RGOjpTdHJpbmcgYW5kIGVuY29kaW5nIGl0
IGJhY2sgYW5kIGZvcnRoIHRvCisgICAgICAgICAgICBhIFFVcmwgY2FuIHNsaWdodGx5IGNoYW5n
ZSBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBBbGxvdyBjb252ZXJ0aW4gYSBXS1VybFJlZgor
ICAgICAgICAgICAgdG8gYW5kIGZyb20gYSBRU3RyaW5nIHRvIGVuc3VyZSB0aGlzLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlci5jcHA6CisgICAgICAgIChRV2ViSWNvbkltYWdl
UHJvdmlkZXI6Omljb25VUkxGb3JQYWdlVVJMSW5Db250ZXh0KToKKyAgICAgICAgICAtIFRoZSBp
Y29uIFVSTCBpc24ndCBhY2Nlc3NpYmxlIGZvcm0gdGhlIEMgQVBJIGFuZCBzaG91bGRuJ3QgbmVl
ZCB0byBiZS4KKyAgICAgICAgICAgIFVzZSBhbiBJRCBpbmNyZW1lbnRlZCBvbiBlYWNoIHVwZGF0
ZSB0byB0cmlnZ2VyIGFuIHVwZGF0ZSBvZiB0aGUgUU1MIEltYWdlIGNvbXBvbmVudC4KKyAgICAg
ICAgKFFXZWJJY29uSW1hZ2VQcm92aWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgICAtIFRo
ZSBJY29uRGF0YWJhc2Ugd2FzIHByZXZpb3VzbHkgYXNzdW1lZCB0byByZXNpemUgdGhlIGltYWdl
IHRvIHRoZSByZXF1ZXN0ZWQgc2l6ZSwKKyAgICAgICAgICAgIGJ1dCB0aGlzIHBhcmFtZXRlciBp
cyBpZ25vcmVkLCBhcyBzdGF0ZWQgaW4gYSBjb21tZW50IGluIFdlYkljb25EYXRhYmFzZTo6aW1h
Z2VGb3JQYWdlVVJMLgorICAgICAgICAgICAgRXhwbGljaXRlbHkgZG8gdGhlIHJlc2l6ZSBhZnRl
ciBmZXRjaGluZyB0aGUgb3JpZ2luYWwgaWNvbiB0byBhbHNvIGJlIGFibGUgdG8gcmVwb3J0Cisg
ICAgICAgICAgICB0aGUgb3JpZ2luYWwgc2l6ZSBwcm9wZXJseSB0byBRdFF1aWNrLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2Zhdkljb25Mb2Fk
LnFtbDoKKyAgICAgICAgICAtIFNldCB0aGUgaW1hZ2UgdG8gbG9hZCBhc3luY2hyb25vdXNseSB0
byBmdXJ0aGVyIHRlc3QgdGhlIHBvc3NpYmlsaXR5IG9mIHRocmVhZGluZyBpc3N1ZXMKKyAgICAg
ICAgICAgIGluIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uSW1hZ2VGb3JQYWdlVVJMCisg
ICAgICAgICAgLSBBZGQgYSBmZXcgYmFycmllcnMgdG8gZml4IHNvbWUgaXNzdWVzIHdoZXJlIHRo
ZSBsb2FkIHN1Y2NlZWRlZCBzaWduYWwgd291bGQgYmUgd3JvbmdseQorICAgICAgICAgICAgY2F0
Y2hlZCBieSBpbml0KCkgYmVmb3JlIHRoZSBuZXh0IHRlc3QuCisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0V2ViQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViQ29udGV4dDo6UXRX
ZWJDb250ZXh0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJJY29uRGF0
YWJhc2VDbGllbnQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6
UXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6On5RdFdlYkljb25EYXRhYmFzZUNsaWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Ojp1cGRhdGVJRCk6CisgICAgICAg
IChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVS
TCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjppY29uSW1hZ2VG
b3JQYWdlVVJMKToKKyAgICAgICAgICAtIFJlbW92ZSB0aGUgTXV0ZXguIFRoaXMgbXV0ZXggd2Fz
IGNvbXBsZXRlbHkgdXNlbGVzcyBnaXZlbiB0aGF0IGl0IHdvdWxkIG9ubHkKKyAgICAgICAgICAg
IGJlIGxvY2tlZCBmcm9tIG9uZSB0aHJlYWQgYW55d2F5LiBTaW5jZSB0aGUgSWNvbkRhdGFiYXNl
IHJ1bnMgaW4gaXRzIG93biB0aHJlYWQsCisgICAgICAgICAgICBpdCBhbHJlYWR5IGlzIHRocmVh
ZC1zYWZlIHRvIGFjY2Vzcy4KKyAgICAgICAgKFdlYktpdDo6UXRXZWJJY29uRGF0YWJhc2VDbGll
bnQ6OnJldGFpbkljb25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJJY29uRGF0
YWJhc2VDbGllbnQ6OnJlbGVhc2VJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNz
L3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgIChRdFdlYkljb25EYXRhYmFz
ZUNsaWVudCk6CisgICAgICAgICogV2ViS2l0Mi5wcmk6CisKIDIwMTMtMDItMTIgIEpvY2VseW4g
VHVyY290dGUgIDxqb2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dL
Ml0gTGF5ZXIgUXREb3dubG9hZE1hbmFnZXIgb24gdGhlIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBh
MjFjNjczYmU4NzY5NWZkMzhmMjIzZjNiNWY4YThjZGQ0N2E2MzZhLi5mMTY4YzI0OTZhYzM0ZTcz
NjFmNWUzNDEyODlhZWZjYzA3YjgyYjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJn
ZXQucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTE5Niw2ICsxOTYsNyBA
QCBIRUFERVJTICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uaCBcCiAgICAg
VUlQcm9jZXNzL0FQSS9DL1dlYktpdDJfQy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tO
YXRpdmVFdmVudC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tJY29uRGF0YWJhc2VRdC5o
IFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKICAgICBVSVByb2Nlc3Mv
QVBJL2NwcC9xdC9XS1N0cmluZ1F0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJM
UXQuaCBcCkBAIC01NDUsNiArNTQ2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQ
SS9DL1dLUmVzb3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tU
ZXh0Q2hlY2tlci5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAgXAor
ICAgIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS0ljb25EYXRhYmFzZVF0LmNwcCBcCiAgICAgVUlQcm9j
ZXNzL0FQSS9jcHAvcXQvV0tTdHJpbmdRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0
L1dLVVJMUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRh
dGFiYXNlUXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRh
dGFiYXNlUXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZTVjNmY2ZGU2Yjk4MjBiM2FmODFhMTYyODY0YzZl
OGJjNzk2ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvcXQvV0tJY29uRGF0YWJhc2VRdC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0ljb25EYXRhYmFzZVF0Lmgi
CisKKyNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIK
KyNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKKyNpbmNsdWRlIDxRUGl4bWFwPgorCit1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1FJbWFnZSBX
S0ljb25EYXRhYmFzZVRyeUdldFFJbWFnZUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0
YWJhc2VSZWYsIFdLVVJMUmVmIHVybFJlZikKK3sKKyAgICBRUGl4bWFwKiBwaXhtYXAgPSB0b0lt
cGwoaWNvbkRhdGFiYXNlUmVmKS0+bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVy
bFJlZikpOworICAgIHJldHVybiBwaXhtYXAgPyBwaXhtYXAtPnRvSW1hZ2UoKSA6IFFJbWFnZSgp
OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNv
bkRhdGFiYXNlUXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9xdC9XS0ljb25E
YXRhYmFzZVF0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjQ3MmRmYjk4OTQ0OWM0ZWUyYTgyZDQwMTk5Mjc5MzEw
ZWMxNTNjNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9xdC9XS0ljb25EYXRhYmFzZVF0LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXS0ljb25EYXRhYmFzZVF0X2gKKyNkZWZpbmUgV0tJY29uRGF0YWJhc2VRdF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9t
ZXRyeS5oPgorCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFJbWFnZTsKK1FUX0VORF9OQU1F
U1BBQ0UKKworV0tfRVhQT1JUIFFJbWFnZSBXS0ljb25EYXRhYmFzZVRyeUdldFFJbWFnZUZvclVS
TChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHVybCk7CisKKyNlbmRp
ZiAvKiBXS0ljb25EYXRhYmFzZVF0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAKaW5kZXggZjkxMTFmN2VhOGE4YjExMmJkMDRjMzVjNGE0
NDBkNmExMDIyM2FiMS4uYTFiNDM1ZTY3YjQxZjU4YTRlNDY5NzBjNDIzYWEyZmRiMGE0NTU2YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAK
QEAgLTI4LDE2ICsyOCwyNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1XS1VSTFJl
ZiBXS1VSTENyZWF0ZVdpdGhRVXJsKGNvbnN0IFFVcmwmIHFVUkwpCitXS1VSTFJlZiBXS1VSTENy
ZWF0ZVdpdGhRU3RyaW5nKGNvbnN0IFFTdHJpbmcmIHVybCkKIHsKLSAgICBXVEY6OlN0cmluZyB1
cmxTdHJpbmcocVVSTC50b1N0cmluZygpKTsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodXJs
U3RyaW5nKTsKKyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodXJsKTsKK30KKworUVN0cmluZyBX
S1VSTENvcHlRU3RyaW5nKFdLVVJMUmVmIHVybFJlZikKK3sKKyAgICBpZiAoIXVybFJlZikKKyAg
ICAgICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICBjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nID0g
dG9JbXBsKHVybFJlZiktPnN0cmluZygpOworICAgIHJldHVybiBRU3RyaW5nKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgUUNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygpKSwgc3RyaW5nLmxlbmd0aCgp
KTsKK30KKworV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoUVVybChjb25zdCBRVXJsJiB1cmwpCit7
CisgICAgcmV0dXJuIFdLVVJMQ3JlYXRlV2l0aFFTdHJpbmcodXJsLnRvU3RyaW5nKFFVcmw6OkZ1
bGx5RW5jb2RlZCkpOwogfQogCiBRVXJsIFdLVVJMQ29weVFVcmwoV0tVUkxSZWYgdXJsUmVmKQog
ewogICAgIGlmICghdXJsUmVmKQogICAgICAgICByZXR1cm4gUVVybCgpOwotICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBzdHJpbmcgPSB0b0ltcGwodXJsUmVmKS0+c3RyaW5nKCk7Ci0gICAgcmV0dXJu
IFFVcmwoUVN0cmluZyhyZWludGVycHJldF9jYXN0PGNvbnN0IFFDaGFyKj4oc3RyaW5nLmNoYXJh
Y3RlcnMoKSksIHN0cmluZy5sZW5ndGgoKSkpOworICAgIHJldHVybiBRVXJsKFdLVVJMQ29weVFT
dHJpbmcodXJsUmVmKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2NwcC9xdC9XS1VSTFF0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1VSTFF0LmgKaW5kZXggMmU0MTQ3MzMwZjBjNDVjNWJiZDNjZjZhOTEzYmEwZTIyZTMyMTYw
ZS4uYTg2MWY3ZDMxYTFmZWRhYjYzMTVmNTY3YTM5Yzk5MzMyMjdjMTViOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuaApAQCAtMjUsNyArMjUsMTAg
QEAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tVUkwu
aD4KIAorV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aFFTdHJpbmcoY29uc3QgUVN0
cmluZyYgdXJsKTsKK1dLX0VYUE9SVCBRU3RyaW5nIFdLVVJMQ29weVFTdHJpbmcoV0tVUkxSZWYg
dXJsKTsKKwogV0tfRVhQT1JUIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aFFVcmwoY29uc3QgUVVy
bCYgdXJsKTsKLVFVcmwgV0tVUkxDb3B5UVVybChXS1VSTFJlZiB1cmwpOworV0tfRVhQT1JUIFFV
cmwgV0tVUkxDb3B5UVVybChXS1VSTFJlZiB1cmwpOwogCiAjZW5kaWYgLyogV0tVUkxDRl9oICov
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1h
Z2Vwcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29u
aW1hZ2Vwcm92aWRlci5jcHAKaW5kZXggYWM3ZWQ1Nzk5MzY3Yjk5Y2I1MzUxMWZhYmI4ZjQxNjU4
YTMwMDAwNC4uMDBlYzZiYzgzMTZmNmZmMWVlMjA1MzU1YmJjZTQyYWIwNjFiNTkyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFn
ZXByb3ZpZGVyLmNwcApAQCAtMjQsOCArMjQsNiBAQAogI2luY2x1ZGUgIlF0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50LmgiCiAjaW5jbHVkZSA8UXRDb3JlL1FVcmw+CiAjaW5jbHVkZSA8UXRHdWkvUUlt
YWdlPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIApAQCAtNDEsMTYgKzM5
LDE3IEBAIFFXZWJJY29uSW1hZ2VQcm92aWRlcjo6flFXZWJJY29uSW1hZ2VQcm92aWRlcigpCiBR
VXJsIFFXZWJJY29uSW1hZ2VQcm92aWRlcjo6aWNvblVSTEZvclBhZ2VVUkxJbkNvbnRleHQoY29u
c3QgUVN0cmluZyAmcGFnZVVSTCwgUXRXZWJDb250ZXh0KiBjb250ZXh0KQogewogICAgIFF0V2Vi
SWNvbkRhdGFiYXNlQ2xpZW50KiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5pY29uRGF0YWJhc2Uo
KTsKLSAgICBRVXJsIGljb25VUkwgPSBpY29uRGF0YWJhc2UtPmljb25Gb3JQYWdlVVJMKHBhZ2VV
UkwpOwogCi0gICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAgIC8vIFZlcmlmeSB0aGF0IHRo
ZSBpbWFnZSBkYXRhIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBiZWZvcmUgcmVwb3J0aW5nIGJhY2sK
KyAgICAvLyBhIHVybCwgc2luY2UgY2xpZW50cyBhc3N1bWUgdGhhdCB0aGUgdXJsIGNhbiBiZSB1
c2VkIGRpcmVjdGx5LgorICAgIGlmIChpY29uRGF0YWJhc2UtPmljb25JbWFnZUZvclBhZ2VVUkwo
cGFnZVVSTCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBRVXJsKCk7CiAKICAgICBRVXJsIHVy
bDsKICAgICB1cmwuc2V0U2NoZW1lKFFTdHJpbmdMaXRlcmFsKCJpbWFnZSIpKTsKICAgICB1cmwu
c2V0SG9zdChRV2ViSWNvbkltYWdlUHJvdmlkZXI6OmlkZW50aWZpZXIoKSk7Ci0gICAgLy8gTWFr
ZSBzdXJlIHRoYXQgUU1MIGRvZXNuJ3Qgc2hvdyBjYWNoZWQgdmVyc2lvbnMgb2YgdGhlIHByZXZp
b3VzIGljb24gaWYgdGhlIGljb24gbG9jYXRpb24gY2hhbmdlZC4KLSAgICB1cmwuc2V0UGF0aChR
TGF0aW4xQ2hhcignLycpICsgUVN0cmluZzo6bnVtYmVyKFdURjo6U3RyaW5nSGFzaDo6aGFzaChp
Y29uVVJMLnRvU3RyaW5nKCkpKSk7CisgICAgLy8gTWFrZSBzdXJlIHRoYXQgUU1MIGRvZXNuJ3Qg
c2hvdyBhIGNhY2hlZCBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSBpY29uIGFmdGVyIGl0IGNoYW5n
ZWQuCisgICAgdXJsLnNldFBhdGgoUVN0cmluZ0xpdGVyYWwoIi8lMSIpLmFyZyhRdFdlYkljb25E
YXRhYmFzZUNsaWVudDo6dXBkYXRlSUQoKSkpOwogCiAgICAgLy8gRklYTUU6IFVzZSBRVXJsOjpE
ZWNvZGVkTW9kZSB3aGVuIGxhbmRlZCBpbiBRdAogICAgIHVybC5zZXRGcmFnbWVudChRU3RyaW5n
Ojpmcm9tTGF0aW4xKHBhZ2VVUkwudG9VdGY4KCkudG9CYXNlNjQoKSkpOwpAQCAtNjgsMTQgKzY3
LDE2IEBAIFFJbWFnZSBRV2ViSWNvbkltYWdlUHJvdmlkZXI6OnJlcXVlc3RJbWFnZShjb25zdCBR
U3RyaW5nJiBpZCwgUVNpemUqIHNpemUsIGNvbnN0CiAgICAgUVN0cmluZyBwYWdlVVJMID0gUVN0
cmluZzo6ZnJvbVV0ZjgoUUJ5dGVBcnJheTo6ZnJvbUJhc2U2NChpZC5taWRSZWYoaWQuaW5kZXhP
ZignIycpICsgMSkudG9MYXRpbjEoKSkpOwogCiAgICAgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQq
IGljb25EYXRhYmFzZSA9IFF0V2ViQ29udGV4dDo6ZGVmYXVsdENvbnRleHQoKS0+aWNvbkRhdGFi
YXNlKCk7Ci0gICAgaWYgKCFpY29uRGF0YWJhc2UpCi0gICAgICAgIHJldHVybiBRSW1hZ2UoKTsK
KyAgICBRX0FTU0VSVChpY29uRGF0YWJhc2UpOwogCi0gICAgUUltYWdlIGljb24gPSByZXF1ZXN0
ZWRTaXplLmlzVmFsaWQoKSA/IGljb25EYXRhYmFzZS0+aWNvbkltYWdlRm9yUGFnZVVSTChwYWdl
VVJMLCByZXF1ZXN0ZWRTaXplKSA6IGljb25EYXRhYmFzZS0+aWNvbkltYWdlRm9yUGFnZVVSTChw
YWdlVVJMKTsKLSAgICBBU1NFUlQoIWljb24uaXNOdWxsKCkpOworICAgIFFJbWFnZSBpY29uID0g
aWNvbkRhdGFiYXNlLT5pY29uSW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwpOworICAgIFFfQVNTRVJU
KCFpY29uLmlzTnVsbCgpKTsKIAogICAgIGlmIChzaXplKQogICAgICAgICAqc2l6ZSA9IGljb24u
c2l6ZSgpOwogCisgICAgaWYgKHJlcXVlc3RlZFNpemUuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gaWNvbi5zY2FsZWQocmVxdWVzdGVkU2l6ZSwgUXQ6OktlZXBBc3BlY3RSYXRpbywgUXQ6OlNt
b290aFRyYW5zZm9ybWF0aW9uKTsKKwogICAgIHJldHVybiBpY29uOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXJfcC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXJf
cC5oCmluZGV4IDJkZjk3YzJlZDAxOGI5MWU0MzgyZjM2ZjI2ZjJkNDhmODQ1MTQ0N2UuLjEwYjJm
Njk3ZWRhYjI1Mjk3ZDZhZDEyNGQyYWI1NTdmZWYzNGNmYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlcl9wLmgK
QEAgLTIzLDcgKzIzLDYgQEAKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVkZSA8
UVN0cmluZz4KICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0ltYWdlUHJvdmlkZXI+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIGNsYXNz
IFF0V2ViQ29udGV4dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvdGVzdHMvcW1sdGVzdHMvV2ViVmlldy90c3RfZmF2SWNvbkxvYWQucW1sIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9mYXZJY29u
TG9hZC5xbWwKaW5kZXggNmYwODU4Njk2N2ZmNzA5ZGRlNGM0MTQ2Y2M3OTU3ZWE4N2Q2Y2NmOC4u
NDQzN2IxMGE0NTNlZjZkZDYzYjJlZTNmZTVkYmY5MzlkNDVhNWU2NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9m
YXZJY29uTG9hZC5xbWwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9mYXZJY29uTG9hZC5xbWwKQEAgLTE0LDYgKzE0LDcgQEAg
VGVzdFdlYlZpZXcgewogCiAgICAgSW1hZ2UgewogICAgICAgICBpZDogZmF2aWNvbgorICAgICAg
ICBhc3luY2hyb25vdXM6IHRydWUKICAgICAgICAgc291cmNlOiB3ZWJWaWV3Lmljb24KICAgICB9
CiAKQEAgLTI2LDggKzI3LDggQEAgVGVzdFdlYlZpZXcgewogICAgICAgICAgICAgaWYgKHdlYlZp
ZXcuaWNvbiAhPSAnJykgewogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IHRoZSBm
aXJzdCB0ZXN0LCB0aGVuIGxvYWQgYSBibGFuayBwYWdlIHdpdGhvdXQgZmF2aWNvbiwgcmVzdG9y
aW5nIHRoZSBpbml0aWFsIHN0YXRlLgogICAgICAgICAgICAgICAgIHdlYlZpZXcudXJsID0gJ2Fi
b3V0OmJsYW5rJwotICAgICAgICAgICAgICAgIHNweS53YWl0KCkKICAgICAgICAgICAgICAgICB2
ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQorICAgICAgICAgICAgICAgIHNw
eS53YWl0KCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHNweS5jbGVhcigpCiAgICAgICAg
IH0KQEAgLTM2LDYgKzM3LDcgQEAgVGVzdFdlYlZpZXcgewogICAgICAgICAgICAgY29tcGFyZShz
cHkuY291bnQsIDApCiAgICAgICAgICAgICB2YXIgdXJsID0gUXQucmVzb2x2ZWRVcmwoIi4uL2Nv
bW1vbi9mYXZpY29uLmh0bWwiKQogICAgICAgICAgICAgd2ViVmlldy51cmwgPSB1cmwKKyAgICAg
ICAgICAgIHZlcmlmeSh3ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCiAgICAgICAgICAg
ICBzcHkud2FpdCgpCiAgICAgICAgICAgICBjb21wYXJlKHNweS5jb3VudCwgMSkKICAgICAgICAg
ICAgIGNvbXBhcmUoZmF2aWNvbi53aWR0aCwgNDgpCkBAIC00Niw2ICs0OCw3IEBAIFRlc3RXZWJW
aWV3IHsKICAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAwKQogICAgICAgICAgICAgdmFy
IHVybCA9IFF0LnJlc29sdmVkVXJsKCIuLi9jb21tb24vZmF2aWNvbjIuaHRtbD9mYXZpY29uPWxv
YWQgc2hvdWxkIHdvcmsgd2l0aCN3aGl0ZXNwYWNlISIpCiAgICAgICAgICAgICB3ZWJWaWV3LnVy
bCA9IHVybAorICAgICAgICAgICAgdmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQo
KSkKICAgICAgICAgICAgIHNweS53YWl0KCkKICAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50
LCAxKQogICAgICAgICAgICAgY29tcGFyZShmYXZpY29uLndpZHRoLCAxNikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkNvbnRleHQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAKaW5kZXggM2Q3YmNlOGE5NTQ5ZmI3
NTcyYjYzOTFmZGM2ZTA1MDBhZGEzZjA0YS4uZTA1OTk1NjcxNzBlNzM0NzgzMjFmN2M0YmVjYWM3
MTUwMTQ4NTVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2Vi
Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4
dC5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplQ29udGV4dElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQogUXRXZWJDb250ZXh0OjpR
dFdlYkNvbnRleHQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4
dCkKICAgICAsIG1fZG93bmxvYWRNYW5hZ2VyKG5ldyBRdERvd25sb2FkTWFuYWdlcihjb250ZXh0
KSkKLSAgICAsIG1faWNvbkRhdGFiYXNlKG5ldyBRdFdlYkljb25EYXRhYmFzZUNsaWVudCh0b0lt
cGwoY29udGV4dCkpKQorICAgICwgbV9pY29uRGF0YWJhc2UobmV3IFF0V2ViSWNvbkRhdGFiYXNl
Q2xpZW50KGNvbnRleHQpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcAppbmRleCAzZjM4ZDY0OTQ3MDlh
ZGJjMThiOTU3ZTIyMTM0NWViMWRmYzlhYzZhLi41ZGJiYzhiMWNhZDliODAzZGIxMzBmNmYwMjIx
OTM0ZTI1MmMyMzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRX
ZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKQEAgLTIwLDg5ICsyMCw2OCBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgiCiAKLSNp
bmNsdWRlICJJbWFnZS5oIgotI2luY2x1ZGUgIktVUkwuaCIKLSNpbmNsdWRlICJTaGFyZWRCdWZm
ZXIuaCIKLSNpbmNsdWRlICJXS1VSTFF0LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dC5oIgotI2lu
Y2x1ZGUgIldlYkljb25EYXRhYmFzZS5oIgogI2luY2x1ZGUgPFF0Q29yZS9RSGFzaD4KICNpbmNs
dWRlIDxRdENvcmUvUU9iamVjdD4KICNpbmNsdWRlIDxRdENvcmUvUVVybD4KICNpbmNsdWRlIDxR
dEd1aS9RSW1hZ2U+CisjaW5jbHVkZSA8V0tDb250ZXh0Lmg+CisjaW5jbHVkZSA8V0tJY29uRGF0
YWJhc2VRdC5oPgorI2luY2x1ZGUgPFdLUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8V0tVUkxRdC5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RhdGljIHVuc2lnbmVkIHNfdXBkYXRlSWQgPSAw
OworCiBzdGF0aWMgaW5saW5lIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KiB0b1F0V2ViSWNvbkRh
dGFiYXNlQ2xpZW50KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgQVNTRVJUKGNsaWVu
dEluZm8pOwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFF0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwogfQogCi1RdFdlYkljb25EYXRh
YmFzZUNsaWVudDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQoV2ViQ29udGV4dCAqY29udGV4dCkK
K1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpRdFdlYkljb25EYXRhYmFzZUNsaWVudChXS0NvbnRl
eHRSZWYgY29udGV4dCkKIHsKLSAgICAvLyBUaGUgc2V0dGVyIGNhbGxzIHRoZSBnZXR0ZXIgaGVy
ZSBhcyBpdCB0cmlnZ2VycyB0aGUgc3RhcnR1cCBvZiB0aGUgaWNvbiBkYXRhYmFzZS4KLSAgICBp
ZiAoIWNvbnRleHQtPmljb25EYXRhYmFzZSgpLT5pc09wZW4oKSkKLSAgICAgICAgY29udGV4dC0+
c2V0SWNvbkRhdGFiYXNlUGF0aChjb250ZXh0LT5pY29uRGF0YWJhc2VQYXRoKCkpOwotICAgIG1f
aWNvbkRhdGFiYXNlID0gY29udGV4dC0+aWNvbkRhdGFiYXNlKCk7CisgICAgbV9pY29uRGF0YWJh
c2UgPSBXS0NvbnRleHRHZXRJY29uRGF0YWJhc2UoY29udGV4dCk7CiAKICAgICBXS0ljb25EYXRh
YmFzZUNsaWVudCBpY29uRGF0YWJhc2VDbGllbnQ7CiAgICAgbWVtc2V0KCZpY29uRGF0YWJhc2VD
bGllbnQsIDAsIHNpemVvZihXS0ljb25EYXRhYmFzZUNsaWVudCkpOwogICAgIGljb25EYXRhYmFz
ZUNsaWVudC52ZXJzaW9uID0ga1dLSWNvbkRhdGFiYXNlQ2xpZW50Q3VycmVudFZlcnNpb247CiAg
ICAgaWNvbkRhdGFiYXNlQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwogICAgIGljb25EYXRhYmFz
ZUNsaWVudC5kaWRDaGFuZ2VJY29uRm9yUGFnZVVSTCA9IGRpZENoYW5nZUljb25Gb3JQYWdlVVJM
OwotICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KHRvQVBJKG1faWNvbkRh
dGFiYXNlLmdldCgpKSwgJmljb25EYXRhYmFzZUNsaWVudCk7CisgICAgV0tJY29uRGF0YWJhc2VT
ZXRJY29uRGF0YWJhc2VDbGllbnQobV9pY29uRGF0YWJhc2UsICZpY29uRGF0YWJhc2VDbGllbnQp
OworICAgIFdLSWNvbkRhdGFiYXNlT3BlbihtX2ljb25EYXRhYmFzZSk7CiB9CiAKIFF0V2ViSWNv
bkRhdGFiYXNlQ2xpZW50Ojp+UXRXZWJJY29uRGF0YWJhc2VDbGllbnQoKQogewotICAgIG1faWNv
bkRhdGFiYXNlLT5jbG9zZSgpOwotICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xp
ZW50KHRvQVBJKG1faWNvbkRhdGFiYXNlLmdldCgpKSwgMCk7CisgICAgV0tJY29uRGF0YWJhc2VD
bG9zZShtX2ljb25EYXRhYmFzZSk7CisgICAgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YWJhc2VD
bGllbnQobV9pY29uRGF0YWJhc2UsIDApOwogfQogCi12b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50OjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYg
cGFnZVVSTCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3Vuc2lnbmVkIFF0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50Ojp1cGRhdGVJRCgpCiB7Ci0gICAgZW1pdCB0b1F0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50KGNsaWVudEluZm8pLT5pY29uQ2hhbmdlZEZvclBhZ2VVUkwodG9JbXBsKHBhZ2VVUkwpLT5z
dHJpbmcoKSk7CisgICAgcmV0dXJuIHNfdXBkYXRlSWQ7CiB9CiAKLVFVcmwgUXRXZWJJY29uRGF0
YWJhc2VDbGllbnQ6Omljb25Gb3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmIHBhZ2VVUkwpCit2b2lk
IFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChXS0ljb25E
YXRhYmFzZVJlZiwgV0tVUkxSZWYgcGFnZVVSTCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsK
LSAgICBTdHJpbmcgaWNvblVSTDsKLSAgICBtX2ljb25EYXRhYmFzZS0+c3luY2hyb25vdXNJY29u
VVJMRm9yUGFnZVVSTChwYWdlVVJMLCBpY29uVVJMKTsKLQotICAgIGlmIChpY29uVVJMLmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIFFVcmwoKTsKLQotICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBp
bWFnZSBkYXRhIGlzIGFjdHVhbGx5IGF2YWlsYWJsZSBiZWZvcmUgcmVwb3J0aW5nIGJhY2sKLSAg
ICAvLyBhIHVybCwgc2luY2UgY2xpZW50cyBhc3N1bWUgdGhhdCB0aGUgdXJsIGNhbiBiZSB1c2Vk
IGRpcmVjdGx5LgotICAgIFdlYkNvcmU6OkltYWdlKiBpY29uSW1hZ2UgPSBtX2ljb25EYXRhYmFz
ZS0+aW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwpOwotICAgIGlmICghaWNvbkltYWdlIHx8IGljb25J
bWFnZS0+aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBRVXJsKCk7Ci0KLSAgICByZXR1cm4gUVVy
bChpY29uVVJMKTsKKyAgICArK3NfdXBkYXRlSWQ7CisgICAgZW1pdCB0b1F0V2ViSWNvbkRhdGFi
YXNlQ2xpZW50KGNsaWVudEluZm8pLT5pY29uQ2hhbmdlZEZvclBhZ2VVUkwoV0tVUkxDb3B5UVN0
cmluZyhwYWdlVVJMKSk7CiB9CiAKLVFJbWFnZSBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNv
bkltYWdlRm9yUGFnZVVSTChjb25zdCBRU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBRU2l6ZSYgaWNv
blNpemUpCitRSW1hZ2UgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25JbWFnZUZvclBhZ2VV
UkwoY29uc3QgUVN0cmluZyYgcGFnZVVSTCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9p
bWFnZUxvY2spOwotCi0gICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKGljb25TaXplLndpZHRoKCks
IGljb25TaXplLmhlaWdodCgpKTsKLQotICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gbV9pY29u
RGF0YWJhc2UtPm5hdGl2ZUltYWdlRm9yUGFnZVVSTChwYWdlVVJMLCBzaXplKTsKLSAgICBpZiAo
IW5hdGl2ZUltYWdlKQotICAgICAgICByZXR1cm4gUUltYWdlKCk7Ci0KLSAgICByZXR1cm4gbmF0
aXZlSW1hZ2UtPnRvSW1hZ2UoKTsKKyAgICByZXR1cm4gV0tJY29uRGF0YWJhc2VUcnlHZXRRSW1h
Z2VGb3JVUkwobV9pY29uRGF0YWJhc2UsIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoUVN0cmluZyhw
YWdlVVJMKSkuZ2V0KCkpOwogfQogCiB2b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpyZXRh
aW5JY29uRm9yUGFnZVVSTChjb25zdCBRU3RyaW5nJiBwYWdlVVJMKQogewotICAgIG1faWNvbkRh
dGFiYXNlLT5yZXRhaW5JY29uRm9yUGFnZVVSTChwYWdlVVJMKTsKKyAgICBXS0ljb25EYXRhYmFz
ZVJldGFpbkljb25Gb3JVUkwobV9pY29uRGF0YWJhc2UsIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRo
UVN0cmluZyhwYWdlVVJMKSkuZ2V0KCkpOwogfQogCiB2b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50OjpyZWxlYXNlSWNvbkZvclBhZ2VVUkwoY29uc3QgUVN0cmluZyYgcGFnZVVSTCkKIHsKLSAg
ICBtX2ljb25EYXRhYmFzZS0+cmVsZWFzZUljb25Gb3JQYWdlVVJMKHBhZ2VVUkwpOworICAgIFdL
SWNvbkRhdGFiYXNlUmVsZWFzZUljb25Gb3JVUkwobV9pY29uRGF0YWJhc2UsIGFkb3B0V0soV0tV
UkxDcmVhdGVXaXRoUVN0cmluZyhwYWdlVVJMKSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYklj
b25EYXRhYmFzZUNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNv
bkRhdGFiYXNlQ2xpZW50LmgKaW5kZXggOWI1MzA3ZjFlYzQyOTBjNDA4OTMzYjllNzU4YjQ4OTQ0
NWZlZDNiNy4uNjliNzk2NWVkYzNjNDA3ODBiZDgzNWM3NWZlNTA1ZDA0Y2FkZTcyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50LmgKQEAgLTIxLDEyICsyMSw5IEBACiAjaWZuZGVmIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50
X2gKICNkZWZpbmUgUXRXZWJJY29uRGF0YWJhc2VDbGllbnRfaAogCi0jaW5jbHVkZSAiV0tJY29u
RGF0YWJhc2UuaCIKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVkZSA8UXRDb3Jl
L1FPYmplY3Q+Ci0jaW5jbHVkZSA8UXRDb3JlL1FTaXplPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8V0tJY29uRGF0YWJhc2Uu
aD4KIAogUVRfQkVHSU5fTkFNRVNQQUNFCiBjbGFzcyBRSW1hZ2U7CkBAIC0zNSwyOSArMzIsMjYg
QEAgUVRfRU5EX05BTUVTUEFDRQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViQ29u
dGV4dDsKLWNsYXNzIFdlYkljb25EYXRhYmFzZTsKLQogY2xhc3MgUXRXZWJJY29uRGF0YWJhc2VD
bGllbnQgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgotICAgIFF0
V2ViSWNvbkRhdGFiYXNlQ2xpZW50KFdlYkNvbnRleHQqKTsKKyAgICBRdFdlYkljb25EYXRhYmFz
ZUNsaWVudChXS0NvbnRleHRSZWYpOwogICAgIH5RdFdlYkljb25EYXRhYmFzZUNsaWVudCgpOwog
Ci0gICAgUVVybCBpY29uRm9yUGFnZVVSTChjb25zdCBRU3RyaW5nJiBwYWdlVVJMKTsKLSAgICBR
SW1hZ2UgaWNvbkltYWdlRm9yUGFnZVVSTChjb25zdCBRU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBR
U2l6ZSYgaWNvblNpemUgPSBRU2l6ZSgzMiwgMzIpKTsKKyAgICBRSW1hZ2UgaWNvbkltYWdlRm9y
UGFnZVVSTChjb25zdCBRU3RyaW5nJik7CiAKICAgICB2b2lkIHJldGFpbkljb25Gb3JQYWdlVVJM
KGNvbnN0IFFTdHJpbmcmKTsKICAgICB2b2lkIHJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBR
U3RyaW5nJik7CiAKKyAgICBzdGF0aWMgdW5zaWduZWQgdXBkYXRlSUQoKTsKKwogcHVibGljOgog
ICAgIFFfU0lHTkFMIHZvaWQgaWNvbkNoYW5nZWRGb3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmIHBh
Z2VVUkwpOwogCiBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUljb25Gb3JQYWdl
VVJMKFdLSWNvbkRhdGFiYXNlUmVmLCBXS1VSTFJlZiBwYWdlVVJMLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKTsKLSAgICBSZWZQdHI8V2ViS2l0OjpXZWJJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFi
YXNlOwotICAgIE11dGV4IG1faW1hZ2VMb2NrOworICAgIFdLSWNvbkRhdGFiYXNlUmVmIG1faWNv
bkRhdGFiYXNlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJLaXQyLnByaSBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCmluZGV4
IDVjMzVkYTQxNGM4NzM5ODRlZWUwY2IyNTY0MjJmZTA5NjM4MjhmNzEuLjVhZmY2NmUxNTEwZDlh
YTU3NDMxNzMyZTI4YzE1MmY2MTVjOGQ4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDIucHJpCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCkBAIC0yOCw2ICsyOCw3
IEBAIElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL3F0IFwKICAgICAk
JFNPVVJDRV9ESVIvVUlQcm9jZXNzIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0FQSS9D
IFwKKyAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0FQSS9DL3F0IFwKICAgICAkJFNPVVJDRV9E
SVIvVUlQcm9jZXNzL0FQSS9jcHAgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvQVBJL2Nw
cC9xdCBcCiAgICAgJCRTT1VSQ0VfRElSL1VJUHJvY2Vzcy9BUEkvcXQgXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191746</attachid>
            <date>2013-03-06 07:01:06 -0800</date>
            <delta_ts>2013-03-11 07:11:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109564-20130306155711.patch</filename>
            <type>text/plain</type>
            <size>22655</size>
            <attacher name="Jocelyn Turcotte">jturcotte</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjRkZTYxMjliMTM0YjM3
YTkzNjc1Y2Y4MTU4NWIyY2U0NWJhN2YyNC4uY2VjNzZhMDFmYTAwOGE0MmQ4YjEzY2Q4NTEyYmQz
YTI0ZWQyMWU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEzLTAzLTA2ICBKb2Nl
bHluIFR1cmNvdHRlICA8am9jZWx5bi50dXJjb3R0ZUBkaWdpYS5jb20+CisKKyAgICAgICAgW1F0
XVtXSzJdIExheWVyIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50IG9uIHRoZSBDIEFQSQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTY0CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUYXJnZXQucHJpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9xdC9XS0ljb25EYXRhYmFzZVF0LmNwcDogQWRkZWQu
CisgICAgICAgIChXS0ljb25EYXRhYmFzZVRyeUdldFFJbWFnZUZvclVSTCk6CisgICAgICAgICAg
LSBOZXcgQVBJIGFkZGVkIHRvIGdldCBhIFFJbWFnZSBmcm9tIHRoZSBJY29uRGF0YWJhc2UuCisg
ICAgICAgICAgICBCYXNlZCBvbiBXS0ljb25EYXRhYmFzZUNHLmgvY3BwCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNlUXQuaDogQWRkZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHA6CisgICAgICAgIChXS1VSTENyZWF0ZVdpdGhR
U3RyaW5nKToKKyAgICAgICAgKFdLVVJMQ29weVFTdHJpbmcpOgorICAgICAgICAoV0tVUkxDcmVh
dGVXaXRoUVVybCk6CisgICAgICAgIChXS1VSTENvcHlRVXJsKToKKyAgICAgICAgICAtIFRoZSBX
S1VybFJlZiBiZWhpbmQgdGhlIHNjZW5lIGlzIGEgV1RGOjpTdHJpbmcgYW5kIGVuY29kaW5nIGl0
IGJhY2sgYW5kIGZvcnRoIHRvCisgICAgICAgICAgICBhIFFVcmwgY2FuIHNsaWdodGx5IGNoYW5n
ZSBpdHMgc3RyaW5nIHJlcHJlc2VudGF0aW9uLiBBbGxvdyBjb252ZXJ0aW5nIGEgV0tVcmxSZWYK
KyAgICAgICAgICAgIHRvIGFuZCBmcm9tIGEgUVN0cmluZyB0byBlbnN1cmUgdGhpcy4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXIuY3BwOgorICAgICAgICAoUVdlYkljb25JbWFn
ZVByb3ZpZGVyOjppY29uVVJMRm9yUGFnZVVSTEluQ29udGV4dCk6CisgICAgICAgICAgLSBUaGUg
aWNvbiBVUkwgaXNuJ3QgYWNjZXNzaWJsZSBmb3JtIHRoZSBDIEFQSSBhbmQgc2hvdWxkbid0IG5l
ZWQgdG8gYmUuCisgICAgICAgICAgICBVc2UgYW4gSUQgaW5jcmVtZW50ZWQgb24gZWFjaCB1cGRh
dGUgdG8gdHJpZ2dlciBhbiB1cGRhdGUgb2YgdGhlIFFNTCBJbWFnZSBjb21wb25lbnQuCisgICAg
ICAgIChRV2ViSWNvbkltYWdlUHJvdmlkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgICAgLSBU
aGUgSWNvbkRhdGFiYXNlIHdhcyBwcmV2aW91c2x5IGFzc3VtZWQgdG8gcmVzaXplIHRoZSBpbWFn
ZSB0byB0aGUgcmVxdWVzdGVkIHNpemUsCisgICAgICAgICAgICBidXQgdGhpcyBwYXJhbWV0ZXIg
aXMgaWdub3JlZCwgYXMgc3RhdGVkIGluIGEgY29tbWVudCBpbiBXZWJJY29uRGF0YWJhc2U6Omlt
YWdlRm9yUGFnZVVSTC4KKyAgICAgICAgICAgIEV4cGxpY2l0ZWx5IGRvIHRoZSByZXNpemUgYWZ0
ZXIgZmV0Y2hpbmcgdGhlIG9yaWdpbmFsIGljb24gdG8gYWxzbyBiZSBhYmxlIHRvIHJlcG9ydAor
ICAgICAgICAgICAgdGhlIG9yaWdpbmFsIHNpemUgcHJvcGVybHkgdG8gUXRRdWljay4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlcl9wLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9mYXZJY29uTG9h
ZC5xbWw6CisgICAgICAgICAgLSBTZXQgdGhlIGltYWdlIHRvIGxvYWQgYXN5bmNocm9ub3VzbHkg
dG8gZnVydGhlciB0ZXN0IHRoZSBwb3NzaWJpbGl0eSBvZiB0aHJlYWRpbmcgaXNzdWVzCisgICAg
ICAgICAgICBpbiBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNvbkltYWdlRm9yUGFnZVVSTAor
ICAgICAgICAgIC0gQWRkIGEgZmV3IGJhcnJpZXJzIHRvIGZpeCBzb21lIGlzc3VlcyB3aGVyZSB0
aGUgbG9hZCBzdWNjZWVkZWQgc2lnbmFsIHdvdWxkIGJlIHdyb25nbHkKKyAgICAgICAgICAgIGNh
dGNoZWQgYnkgaW5pdCgpIGJlZm9yZSB0aGUgbmV4dCB0ZXN0LgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9RdFdlYkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkNvbnRleHQ6OlF0
V2ViQ29udGV4dCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlF0V2ViSWNvbkRh
dGFiYXNlQ2xpZW50OjpRdFdlYkljb25EYXRhYmFzZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6
OlF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Ojp+UXRXZWJJY29uRGF0YWJhc2VDbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6dXBkYXRlSUQpOgorICAgICAg
ICAoV2ViS2l0OjpRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbkZvclBhZ2VV
UkwpOgorICAgICAgICAoV2ViS2l0OjpRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNvbkltYWdl
Rm9yUGFnZVVSTCk6CisgICAgICAgICAgLSBSZW1vdmUgdGhlIE11dGV4LiBUaGlzIG11dGV4IHdh
cyB1c2VsZXNzIGdpdmVuIHRoYXQgaXQgd291bGQgb25seQorICAgICAgICAgICAgYmUgbG9ja2Vk
IGZyb20gYSBzaW5nbGUgdGhyZWFkLiBTaW5jZSB0aGUgSWNvbkRhdGFiYXNlIHJ1bnMgaW4gaXRz
IG93biB0aHJlYWQsCisgICAgICAgICAgICBpdCBhbHJlYWR5IGlzIHRocmVhZC1zYWZlIHRvIGFj
Y2Vzcy4KKyAgICAgICAgKFdlYktpdDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6OnJldGFpbklj
b25Gb3JQYWdlVVJMKToKKyAgICAgICAgKFdlYktpdDo6UXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6
OnJlbGVhc2VJY29uRm9yUGFnZVVSTCk6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2ViSWNv
bkRhdGFiYXNlQ2xpZW50Lmg6CisgICAgICAgIChRdFdlYkljb25EYXRhYmFzZUNsaWVudCk6Cisg
ICAgICAgICogV2ViS2l0Mi5wcmk6CisKIDIwMTMtMDMtMDUgIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdW1dLMl0gU3BlY2lmeSBz
dG9yYWdlIHBhdGhzIHRocm91Z2ggdGhlIEMgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRleCBkN2EyNTM5YmRl
YzA2YWFhZGJjMWM4MzZiMDQ0ZmM5MjE0YzMzMDMxLi5lNzJmMjBmMmU4ZDY0ZWEyYWFkNDU3OWU4
NWYyODE4ZGZhYjhlZmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTE5NSw2ICsxOTUsNyBAQCBIRUFERVJT
ICs9IFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWJyYXRpb24uaCBcCiAgICAgVUlQcm9jZXNz
L0FQSS9DL1dlYktpdDJfQy5oIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tOYXRpdmVFdmVu
dC5oIFwKKyAgICBVSVByb2Nlc3MvQVBJL0MvcXQvV0tJY29uRGF0YWJhc2VRdC5oIFwKICAgICBV
SVByb2Nlc3MvQVBJL2NwcC9XS1JldGFpblB0ci5oIFwKICAgICBVSVByb2Nlc3MvQVBJL2NwcC9x
dC9XS1N0cmluZ1F0LmggXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQuaCBcCkBA
IC01NDQsNiArNTQ1LDcgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLUmVz
b3VyY2VDYWNoZU1hbmFnZXIuY3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tUZXh0Q2hlY2tl
ci5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAgXAorICAgIFVJUHJv
Y2Vzcy9BUEkvQy9xdC9XS0ljb25EYXRhYmFzZVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL0FQSS9j
cHAvcXQvV0tTdHJpbmdRdC5jcHAgXAogICAgIFVJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJMUXQu
Y3BwIFwKICAgICBVSVByb2Nlc3MvQVBJL3F0L3Jhdy9xcmF3d2Vidmlldy5jcHAgXApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNlUXQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNlUXQu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVlZTVjNmY2ZGU2Yjk4MjBiM2FmODFhMTYyODY0YzZlOGJjNzk2ZTYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvcXQvV0tJ
Y29uRGF0YWJhc2VRdC5jcHAKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBd0JJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS0ljb25EYXRhYmFzZVF0LmgiCisKKyNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKKyNpbmNsdWRl
ICJXZWJJY29uRGF0YWJhc2UuaCIKKyNpbmNsdWRlIDxRUGl4bWFwPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK1FJbWFnZSBXS0ljb25EYXRh
YmFzZVRyeUdldFFJbWFnZUZvclVSTChXS0ljb25EYXRhYmFzZVJlZiBpY29uRGF0YWJhc2VSZWYs
IFdLVVJMUmVmIHVybFJlZikKK3sKKyAgICBRUGl4bWFwKiBwaXhtYXAgPSB0b0ltcGwoaWNvbkRh
dGFiYXNlUmVmKS0+bmF0aXZlSW1hZ2VGb3JQYWdlVVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOwor
ICAgIHJldHVybiBwaXhtYXAgPyBwaXhtYXAtPnRvSW1hZ2UoKSA6IFFJbWFnZSgpOworfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL3F0L1dLSWNvbkRhdGFiYXNl
UXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9xdC9XS0ljb25EYXRhYmFzZVF0
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjQ3MmRmYjk4OTQ0OWM0ZWUyYTgyZDQwMTk5Mjc5MzEwZWMxNTNjNgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9xdC9XS0lj
b25EYXRhYmFzZVF0LmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MyBEaWdpYSBQbGMgYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS0ljb25EYXRhYmFzZVF0X2gKKyNkZWZpbmUgV0tJY29uRGF0YWJhc2VRdF9oCisKKyNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgor
CitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNzIFFJbWFnZTsKK1FUX0VORF9OQU1FU1BBQ0UKKwor
V0tfRVhQT1JUIFFJbWFnZSBXS0ljb25EYXRhYmFzZVRyeUdldFFJbWFnZUZvclVSTChXS0ljb25E
YXRhYmFzZVJlZiBpY29uRGF0YWJhc2UsIFdLVVJMUmVmIHVybCk7CisKKyNlbmRpZiAvKiBXS0lj
b25EYXRhYmFzZVF0X2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvY3BwL3F0L1dLVVJMUXQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAv
cXQvV0tVUkxRdC5jcHAKaW5kZXggZjkxMTFmN2VhOGE4YjExMmJkMDRjMzVjNGE0NDBkNmExMDIy
M2FiMS4uMGJkYTg4MGIyNzVlMGYzZTJlYzdlNzIyMTQyMGJlZWY1Y2M1YThkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5jcHAKQEAgLTI4LDE2
ICsyOCwyNiBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCi1XS1VSTFJlZiBXS1VSTENy
ZWF0ZVdpdGhRVXJsKGNvbnN0IFFVcmwmIHFVUkwpCitXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhR
U3RyaW5nKGNvbnN0IFFTdHJpbmcmIHVybCkKIHsKLSAgICBXVEY6OlN0cmluZyB1cmxTdHJpbmco
cVVSTC50b1N0cmluZygpKTsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodXJsU3RyaW5nKTsK
KyAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodXJsKTsKK30KKworUVN0cmluZyBXS1VSTENvcHlR
U3RyaW5nKFdLVVJMUmVmIHVybFJlZikKK3sKKyAgICBpZiAoIXVybFJlZikKKyAgICAgICAgcmV0
dXJuIFFTdHJpbmcoKTsKKyAgICByZXR1cm4gdG9JbXBsKHVybFJlZiktPnN0cmluZygpOworfQor
CitXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhRVXJsKGNvbnN0IFFVcmwmIHVybCkKK3sKKyAgICBy
ZXR1cm4gV0tVUkxDcmVhdGVXaXRoUVN0cmluZyh1cmwudG9TdHJpbmcoUVVybDo6RnVsbHlFbmNv
ZGVkKSk7CiB9CiAKIFFVcmwgV0tVUkxDb3B5UVVybChXS1VSTFJlZiB1cmxSZWYpCiB7CiAgICAg
aWYgKCF1cmxSZWYpCiAgICAgICAgIHJldHVybiBRVXJsKCk7Ci0gICAgY29uc3QgV1RGOjpTdHJp
bmcmIHN0cmluZyA9IHRvSW1wbCh1cmxSZWYpLT5zdHJpbmcoKTsKLSAgICByZXR1cm4gUVVybChR
U3RyaW5nKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgUUNoYXIqPihzdHJpbmcuY2hhcmFjdGVycygp
KSwgc3RyaW5nLmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIFFVcmwoV0tVUkxDb3B5UVN0cmluZyh1
cmxSZWYpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3Bw
L3F0L1dLVVJMUXQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvY3BwL3F0L1dLVVJM
UXQuaAppbmRleCAyZTQxNDczMzBmMGM0NWM1YmJkM2NmNmE5MTNiYTBlMjJlMzIxNjBlLi5hODYx
ZjdkMzFhMWZlZGFiNjMxNWY1NjdhMzljOTkzMzIyN2MxNWI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC9XS1VSTFF0LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvV0tVUkxRdC5oCkBAIC0yNSw3ICsyNSwxMCBAQAogI2lu
Y2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1VSTC5oPgogCitX
S19FWFBPUlQgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoUVN0cmluZyhjb25zdCBRU3RyaW5nJiB1
cmwpOworV0tfRVhQT1JUIFFTdHJpbmcgV0tVUkxDb3B5UVN0cmluZyhXS1VSTFJlZiB1cmwpOwor
CiBXS19FWFBPUlQgV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoUVVybChjb25zdCBRVXJsJiB1cmwp
OwotUVVybCBXS1VSTENvcHlRVXJsKFdLVVJMUmVmIHVybCk7CitXS19FWFBPUlQgUVVybCBXS1VS
TENvcHlRVXJsKFdLVVJMUmVmIHVybCk7CiAKICNlbmRpZiAvKiBXS1VSTENGX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3Zp
ZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXBy
b3ZpZGVyLmNwcAppbmRleCBhYzdlZDU3OTkzNjdiOTljYjUzNTExZmFiYjhmNDE2NThhMzAwMDA0
Li4wMGVjNmJjODMxNmY2ZmYxZWUyMDUzNTViYmNlNDJhYjA2MWI1OTI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlk
ZXIuY3BwCkBAIC0yNCw4ICsyNCw2IEBACiAjaW5jbHVkZSAiUXRXZWJJY29uRGF0YWJhc2VDbGll
bnQuaCIKICNpbmNsdWRlIDxRdENvcmUvUVVybD4KICNpbmNsdWRlIDxRdEd1aS9RSW1hZ2U+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC00MSwxNiArMzksMTcgQEAg
UVdlYkljb25JbWFnZVByb3ZpZGVyOjp+UVdlYkljb25JbWFnZVByb3ZpZGVyKCkKIFFVcmwgUVdl
Ykljb25JbWFnZVByb3ZpZGVyOjppY29uVVJMRm9yUGFnZVVSTEluQ29udGV4dChjb25zdCBRU3Ry
aW5nICZwYWdlVVJMLCBRdFdlYkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgUXRXZWJJY29uRGF0
YWJhc2VDbGllbnQqIGljb25EYXRhYmFzZSA9IGNvbnRleHQtPmljb25EYXRhYmFzZSgpOwotICAg
IFFVcmwgaWNvblVSTCA9IGljb25EYXRhYmFzZS0+aWNvbkZvclBhZ2VVUkwocGFnZVVSTCk7CiAK
LSAgICBpZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGltYWdl
IGRhdGEgaXMgYWN0dWFsbHkgYXZhaWxhYmxlIGJlZm9yZSByZXBvcnRpbmcgYmFjaworICAgIC8v
IGEgdXJsLCBzaW5jZSBjbGllbnRzIGFzc3VtZSB0aGF0IHRoZSB1cmwgY2FuIGJlIHVzZWQgZGly
ZWN0bHkuCisgICAgaWYgKGljb25EYXRhYmFzZS0+aWNvbkltYWdlRm9yUGFnZVVSTChwYWdlVVJM
KS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIFFVcmwoKTsKIAogICAgIFFVcmwgdXJsOwogICAg
IHVybC5zZXRTY2hlbWUoUVN0cmluZ0xpdGVyYWwoImltYWdlIikpOwogICAgIHVybC5zZXRIb3N0
KFFXZWJJY29uSW1hZ2VQcm92aWRlcjo6aWRlbnRpZmllcigpKTsKLSAgICAvLyBNYWtlIHN1cmUg
dGhhdCBRTUwgZG9lc24ndCBzaG93IGNhY2hlZCB2ZXJzaW9ucyBvZiB0aGUgcHJldmlvdXMgaWNv
biBpZiB0aGUgaWNvbiBsb2NhdGlvbiBjaGFuZ2VkLgotICAgIHVybC5zZXRQYXRoKFFMYXRpbjFD
aGFyKCcvJykgKyBRU3RyaW5nOjpudW1iZXIoV1RGOjpTdHJpbmdIYXNoOjpoYXNoKGljb25VUkwu
dG9TdHJpbmcoKSkpKTsKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCBRTUwgZG9lc24ndCBzaG93IGEg
Y2FjaGVkIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIGljb24gYWZ0ZXIgaXQgY2hhbmdlZC4KKyAg
ICB1cmwuc2V0UGF0aChRU3RyaW5nTGl0ZXJhbCgiLyUxIikuYXJnKFF0V2ViSWNvbkRhdGFiYXNl
Q2xpZW50Ojp1cGRhdGVJRCgpKSk7CiAKICAgICAvLyBGSVhNRTogVXNlIFFVcmw6OkRlY29kZWRN
b2RlIHdoZW4gbGFuZGVkIGluIFF0CiAgICAgdXJsLnNldEZyYWdtZW50KFFTdHJpbmc6OmZyb21M
YXRpbjEocGFnZVVSTC50b1V0ZjgoKS50b0Jhc2U2NCgpKSk7CkBAIC02OCwxNCArNjcsMTYgQEAg
UUltYWdlIFFXZWJJY29uSW1hZ2VQcm92aWRlcjo6cmVxdWVzdEltYWdlKGNvbnN0IFFTdHJpbmcm
IGlkLCBRU2l6ZSogc2l6ZSwgY29uc3QKICAgICBRU3RyaW5nIHBhZ2VVUkwgPSBRU3RyaW5nOjpm
cm9tVXRmOChRQnl0ZUFycmF5Ojpmcm9tQmFzZTY0KGlkLm1pZFJlZihpZC5pbmRleE9mKCcjJykg
KyAxKS50b0xhdGluMSgpKSk7CiAKICAgICBRdFdlYkljb25EYXRhYmFzZUNsaWVudCogaWNvbkRh
dGFiYXNlID0gUXRXZWJDb250ZXh0OjpkZWZhdWx0Q29udGV4dCgpLT5pY29uRGF0YWJhc2UoKTsK
LSAgICBpZiAoIWljb25EYXRhYmFzZSkKLSAgICAgICAgcmV0dXJuIFFJbWFnZSgpOworICAgIFFf
QVNTRVJUKGljb25EYXRhYmFzZSk7CiAKLSAgICBRSW1hZ2UgaWNvbiA9IHJlcXVlc3RlZFNpemUu
aXNWYWxpZCgpID8gaWNvbkRhdGFiYXNlLT5pY29uSW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwsIHJl
cXVlc3RlZFNpemUpIDogaWNvbkRhdGFiYXNlLT5pY29uSW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwp
OwotICAgIEFTU0VSVCghaWNvbi5pc051bGwoKSk7CisgICAgUUltYWdlIGljb24gPSBpY29uRGF0
YWJhc2UtPmljb25JbWFnZUZvclBhZ2VVUkwocGFnZVVSTCk7CisgICAgUV9BU1NFUlQoIWljb24u
aXNOdWxsKCkpOwogCiAgICAgaWYgKHNpemUpCiAgICAgICAgICpzaXplID0gaWNvbi5zaXplKCk7
CiAKKyAgICBpZiAocmVxdWVzdGVkU2l6ZS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBpY29u
LnNjYWxlZChyZXF1ZXN0ZWRTaXplLCBRdDo6S2VlcEFzcGVjdFJhdGlvLCBRdDo6U21vb3RoVHJh
bnNmb3JtYXRpb24pOworCiAgICAgcmV0dXJuIGljb247CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlcl9wLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJpY29uaW1hZ2Vwcm92aWRlcl9wLmgKaW5k
ZXggMmRmOTdjMmVkMDE4YjkxZTQzODJmMzZmMjZmMmQ0OGY4NDUxNDQ3ZS4uMTBiMmY2OTdlZGFi
MjUyOTdkNmFkMTI0ZDJhYjU1N2ZlZjM0Y2ZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xd2ViaWNvbmltYWdlcHJvdmlkZXJfcC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmljb25pbWFnZXByb3ZpZGVyX3AuaApAQCAtMjMs
NyArMjMsNiBAQAogI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKICNpbmNsdWRlIDxRU3RyaW5n
PgogI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrSW1hZ2VQcm92aWRlcj4KLSNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3MgUXRXZWJD
b250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0
cy9xbWx0ZXN0cy9XZWJWaWV3L3RzdF9mYXZJY29uTG9hZC5xbWwgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2Zhdkljb25Mb2FkLnFt
bAppbmRleCA2ZjA4NTg2OTY3ZmY3MDlkZGU0YzQxNDZjYzc5NTdlYTg3ZDZjY2Y4Li40NDM3YjEw
YTQ1M2VmNmRkNjNiMmVlM2ZlNWRiZjkzOWQ0NWE1ZTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRlc3RzL1dlYlZpZXcvdHN0X2Zhdkljb25M
b2FkLnFtbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3FtbHRl
c3RzL1dlYlZpZXcvdHN0X2Zhdkljb25Mb2FkLnFtbApAQCAtMTQsNiArMTQsNyBAQCBUZXN0V2Vi
VmlldyB7CiAKICAgICBJbWFnZSB7CiAgICAgICAgIGlkOiBmYXZpY29uCisgICAgICAgIGFzeW5j
aHJvbm91czogdHJ1ZQogICAgICAgICBzb3VyY2U6IHdlYlZpZXcuaWNvbgogICAgIH0KIApAQCAt
MjYsOCArMjcsOCBAQCBUZXN0V2ViVmlldyB7CiAgICAgICAgICAgICBpZiAod2ViVmlldy5pY29u
ICE9ICcnKSB7CiAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgdGhlIGZpcnN0IHRl
c3QsIHRoZW4gbG9hZCBhIGJsYW5rIHBhZ2Ugd2l0aG91dCBmYXZpY29uLCByZXN0b3JpbmcgdGhl
IGluaXRpYWwgc3RhdGUuCiAgICAgICAgICAgICAgICAgd2ViVmlldy51cmwgPSAnYWJvdXQ6Ymxh
bmsnCi0gICAgICAgICAgICAgICAgc3B5LndhaXQoKQogICAgICAgICAgICAgICAgIHZlcmlmeSh3
ZWJWaWV3LndhaXRGb3JMb2FkU3VjY2VlZGVkKCkpCisgICAgICAgICAgICAgICAgc3B5LndhaXQo
KQogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3B5LmNsZWFyKCkKICAgICAgICAgfQpAQCAt
MzYsNiArMzcsNyBAQCBUZXN0V2ViVmlldyB7CiAgICAgICAgICAgICBjb21wYXJlKHNweS5jb3Vu
dCwgMCkKICAgICAgICAgICAgIHZhciB1cmwgPSBRdC5yZXNvbHZlZFVybCgiLi4vY29tbW9uL2Zh
dmljb24uaHRtbCIpCiAgICAgICAgICAgICB3ZWJWaWV3LnVybCA9IHVybAorICAgICAgICAgICAg
dmVyaWZ5KHdlYlZpZXcud2FpdEZvckxvYWRTdWNjZWVkZWQoKSkKICAgICAgICAgICAgIHNweS53
YWl0KCkKICAgICAgICAgICAgIGNvbXBhcmUoc3B5LmNvdW50LCAxKQogICAgICAgICAgICAgY29t
cGFyZShmYXZpY29uLndpZHRoLCA0OCkKQEAgLTQ2LDYgKzQ4LDcgQEAgVGVzdFdlYlZpZXcgewog
ICAgICAgICAgICAgY29tcGFyZShzcHkuY291bnQsIDApCiAgICAgICAgICAgICB2YXIgdXJsID0g
UXQucmVzb2x2ZWRVcmwoIi4uL2NvbW1vbi9mYXZpY29uMi5odG1sP2Zhdmljb249bG9hZCBzaG91
bGQgd29yayB3aXRoI3doaXRlc3BhY2UhIikKICAgICAgICAgICAgIHdlYlZpZXcudXJsID0gdXJs
CisgICAgICAgICAgICB2ZXJpZnkod2ViVmlldy53YWl0Rm9yTG9hZFN1Y2NlZWRlZCgpKQogICAg
ICAgICAgICAgc3B5LndhaXQoKQogICAgICAgICAgICAgY29tcGFyZShzcHkuY291bnQsIDEpCiAg
ICAgICAgICAgICBjb21wYXJlKGZhdmljb24ud2lkdGgsIDE2KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNwcAppbmRleCA4NjcyYjdjOTFiZTIzMWY3NmUwZjQ0
Zjg5NDI2ZGQ3OTcwZGM1ZmIzLi5jYTU2MmRjODAwMmVlZjZlNGMyNTdhZjBmNjFhMmI0NWI3MjJh
NmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJDb250ZXh0LmNwcApA
QCAtMTE4LDcgKzExOCw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQpCiBRdFdlYkNvbnRleHQ6OlF0V2ViQ29u
dGV4dChXS0NvbnRleHRSZWYgY29udGV4dCkKICAgICA6IG1fY29udGV4dChjb250ZXh0KQogICAg
ICwgbV9kb3dubG9hZE1hbmFnZXIobmV3IFF0RG93bmxvYWRNYW5hZ2VyKHRvSW1wbChjb250ZXh0
KSkpCi0gICAgLCBtX2ljb25EYXRhYmFzZShuZXcgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQodG9J
bXBsKGNvbnRleHQpKSkKKyAgICAsIG1faWNvbkRhdGFiYXNlKG5ldyBRdFdlYkljb25EYXRhYmFz
ZUNsaWVudChjb250ZXh0KSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5jcHAKaW5kZXggOWU2YmJkMTcwY2Vi
YWIwZmU0MDIxYmQ0NDEzZWNlN2RiMTY3YzQxOC4uZTViM2FhZGU1YTQxNjQ0OWFlYzZiZDk5OWFh
MDk5ZDhiNzRhYmNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJJY29uRGF0YWJhc2VDbGllbnQuY3BwCkBAIC0yMCw5MiArMjAsNzIgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJRdFdlYkljb25EYXRhYmFzZUNsaWVudC5oIgogCi0j
aW5jbHVkZSAiSW1hZ2UuaCIKLSNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUXRXZWJDb250
ZXh0LmgiCi0jaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCi0jaW5jbHVkZSAiV0tVUkxRdC5oIgot
I2luY2x1ZGUgIldlYkNvbnRleHQuaCIKLSNpbmNsdWRlICJXZWJJY29uRGF0YWJhc2UuaCIKICNp
bmNsdWRlIDxRdENvcmUvUUhhc2g+CiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+CiAjaW5jbHVk
ZSA8UXRDb3JlL1FVcmw+CiAjaW5jbHVkZSA8UXRHdWkvUUltYWdlPgorI2luY2x1ZGUgPFdLQ29u
dGV4dC5oPgogI2luY2x1ZGUgPFdLQ29udGV4dFByaXZhdGUuaD4KKyNpbmNsdWRlIDxXS0ljb25E
YXRhYmFzZVF0Lmg+CiAjaW5jbHVkZSA8V0tSZXRhaW5QdHIuaD4KICNpbmNsdWRlIDxXS1N0cmlu
Z1F0Lmg+CisjaW5jbHVkZSA8V0tVUkxRdC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3Rh
dGljIHVuc2lnbmVkIHNfdXBkYXRlSWQgPSAwOworCiBzdGF0aWMgaW5saW5lIFF0V2ViSWNvbkRh
dGFiYXNlQ2xpZW50KiB0b1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCiB7CiAgICAgQVNTRVJUKGNsaWVudEluZm8pOwogICAgIHJldHVybiByZWludGVycHJl
dF9jYXN0PFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50
SW5mbykpOwogfQogCi1RdFdlYkljb25EYXRhYmFzZUNsaWVudDo6UXRXZWJJY29uRGF0YWJhc2VD
bGllbnQoV2ViQ29udGV4dCAqY29udGV4dCkKK1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpRdFdl
Ykljb25EYXRhYmFzZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCkKIHsKLSAgICBtX2ljb25E
YXRhYmFzZSA9IGNvbnRleHQtPmljb25EYXRhYmFzZSgpOworICAgIG1faWNvbkRhdGFiYXNlID0g
V0tDb250ZXh0R2V0SWNvbkRhdGFiYXNlKGNvbnRleHQpOwogCiAgICAgV0tJY29uRGF0YWJhc2VD
bGllbnQgaWNvbkRhdGFiYXNlQ2xpZW50OwogICAgIG1lbXNldCgmaWNvbkRhdGFiYXNlQ2xpZW50
LCAwLCBzaXplb2YoV0tJY29uRGF0YWJhc2VDbGllbnQpKTsKICAgICBpY29uRGF0YWJhc2VDbGll
bnQudmVyc2lvbiA9IGtXS0ljb25EYXRhYmFzZUNsaWVudEN1cnJlbnRWZXJzaW9uOwogICAgIGlj
b25EYXRhYmFzZUNsaWVudC5jbGllbnRJbmZvID0gdGhpczsKICAgICBpY29uRGF0YWJhc2VDbGll
bnQuZGlkQ2hhbmdlSWNvbkZvclBhZ2VVUkwgPSBkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTDsKLSAg
ICBXS0ljb25EYXRhYmFzZVNldEljb25EYXRhYmFzZUNsaWVudCh0b0FQSShtX2ljb25EYXRhYmFz
ZS5nZXQoKSksICZpY29uRGF0YWJhc2VDbGllbnQpOworICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNv
bkRhdGFiYXNlQ2xpZW50KG1faWNvbkRhdGFiYXNlLCAmaWNvbkRhdGFiYXNlQ2xpZW50KTsKICAg
ICAvLyBUcmlnZ2VycyB0aGUgc3RhcnR1cCBvZiB0aGUgaWNvbiBkYXRhYmFzZS4KLSAgICBXS0Nv
bnRleHRTZXRJY29uRGF0YWJhc2VQYXRoKHRvQVBJKGNvbnRleHQpLCBhZG9wdFdLKFdLU3RyaW5n
Q3JlYXRlV2l0aFFTdHJpbmcoUXRXZWJDb250ZXh0OjpwcmVwYXJlZFN0b3JhZ2VQYXRoKFF0V2Vi
Q29udGV4dDo6SWNvbkRhdGFiYXNlU3RvcmFnZSkpKS5nZXQoKSk7CisgICAgV0tDb250ZXh0U2V0
SWNvbkRhdGFiYXNlUGF0aChjb250ZXh0LCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJp
bmcoUXRXZWJDb250ZXh0OjpwcmVwYXJlZFN0b3JhZ2VQYXRoKFF0V2ViQ29udGV4dDo6SWNvbkRh
dGFiYXNlU3RvcmFnZSkpKS5nZXQoKSk7CiB9CiAKIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Ojp+
UXRXZWJJY29uRGF0YWJhc2VDbGllbnQoKQogewotICAgIG1faWNvbkRhdGFiYXNlLT5jbG9zZSgp
OwotICAgIFdLSWNvbkRhdGFiYXNlU2V0SWNvbkRhdGFiYXNlQ2xpZW50KHRvQVBJKG1faWNvbkRh
dGFiYXNlLmdldCgpKSwgMCk7CisgICAgV0tJY29uRGF0YWJhc2VDbG9zZShtX2ljb25EYXRhYmFz
ZSk7CisgICAgV0tJY29uRGF0YWJhc2VTZXRJY29uRGF0YWJhc2VDbGllbnQobV9pY29uRGF0YWJh
c2UsIDApOwogfQogCi12b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpkaWRDaGFuZ2VJY29u
Rm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxSZWYgcGFnZVVSTCwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKK3Vuc2lnbmVkIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50Ojp1cGRhdGVJ
RCgpCiB7Ci0gICAgZW1pdCB0b1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KGNsaWVudEluZm8pLT5p
Y29uQ2hhbmdlZEZvclBhZ2VVUkwodG9JbXBsKHBhZ2VVUkwpLT5zdHJpbmcoKSk7CisgICAgcmV0
dXJuIHNfdXBkYXRlSWQ7CiB9CiAKLVFVcmwgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25G
b3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmIHBhZ2VVUkwpCit2b2lkIFF0V2ViSWNvbkRhdGFiYXNl
Q2xpZW50OjpkaWRDaGFuZ2VJY29uRm9yUGFnZVVSTChXS0ljb25EYXRhYmFzZVJlZiwgV0tVUkxS
ZWYgcGFnZVVSTCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKLSAgICBTdHJpbmcgaWNvblVS
TDsKLSAgICBtX2ljb25EYXRhYmFzZS0+c3luY2hyb25vdXNJY29uVVJMRm9yUGFnZVVSTChwYWdl
VVJMLCBpY29uVVJMKTsKLQotICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIFFVcmwoKTsKLQotICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBpbWFnZSBkYXRhIGlzIGFjdHVh
bGx5IGF2YWlsYWJsZSBiZWZvcmUgcmVwb3J0aW5nIGJhY2sKLSAgICAvLyBhIHVybCwgc2luY2Ug
Y2xpZW50cyBhc3N1bWUgdGhhdCB0aGUgdXJsIGNhbiBiZSB1c2VkIGRpcmVjdGx5LgotICAgIFdl
YkNvcmU6OkltYWdlKiBpY29uSW1hZ2UgPSBtX2ljb25EYXRhYmFzZS0+aW1hZ2VGb3JQYWdlVVJM
KHBhZ2VVUkwpOwotICAgIGlmICghaWNvbkltYWdlIHx8IGljb25JbWFnZS0+aXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybiBRVXJsKCk7Ci0KLSAgICByZXR1cm4gUVVybChpY29uVVJMKTsKKyAgICAr
K3NfdXBkYXRlSWQ7CisgICAgZW1pdCB0b1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50KGNsaWVudElu
Zm8pLT5pY29uQ2hhbmdlZEZvclBhZ2VVUkwoV0tVUkxDb3B5UVN0cmluZyhwYWdlVVJMKSk7CiB9
CiAKLVFJbWFnZSBRdFdlYkljb25EYXRhYmFzZUNsaWVudDo6aWNvbkltYWdlRm9yUGFnZVVSTChj
b25zdCBRU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBRU2l6ZSYgaWNvblNpemUpCitRSW1hZ2UgUXRX
ZWJJY29uRGF0YWJhc2VDbGllbnQ6Omljb25JbWFnZUZvclBhZ2VVUkwoY29uc3QgUVN0cmluZyYg
cGFnZVVSTCkKIHsKLSAgICBNdXRleExvY2tlciBsb2NrZXIobV9pbWFnZUxvY2spOwotCi0gICAg
V2ViQ29yZTo6SW50U2l6ZSBzaXplKGljb25TaXplLndpZHRoKCksIGljb25TaXplLmhlaWdodCgp
KTsKLQotICAgIFFQaXhtYXAqIG5hdGl2ZUltYWdlID0gbV9pY29uRGF0YWJhc2UtPm5hdGl2ZUlt
YWdlRm9yUGFnZVVSTChwYWdlVVJMLCBzaXplKTsKLSAgICBpZiAoIW5hdGl2ZUltYWdlKQotICAg
ICAgICByZXR1cm4gUUltYWdlKCk7Ci0KLSAgICByZXR1cm4gbmF0aXZlSW1hZ2UtPnRvSW1hZ2Uo
KTsKKyAgICByZXR1cm4gV0tJY29uRGF0YWJhc2VUcnlHZXRRSW1hZ2VGb3JVUkwobV9pY29uRGF0
YWJhc2UsIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoUVN0cmluZyhwYWdlVVJMKSkuZ2V0KCkpOwog
fQogCiB2b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpyZXRhaW5JY29uRm9yUGFnZVVSTChj
b25zdCBRU3RyaW5nJiBwYWdlVVJMKQogewotICAgIG1faWNvbkRhdGFiYXNlLT5yZXRhaW5JY29u
Rm9yUGFnZVVSTChwYWdlVVJMKTsKKyAgICBXS0ljb25EYXRhYmFzZVJldGFpbkljb25Gb3JVUkwo
bV9pY29uRGF0YWJhc2UsIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoUVN0cmluZyhwYWdlVVJMKSku
Z2V0KCkpOwogfQogCiB2b2lkIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50OjpyZWxlYXNlSWNvbkZv
clBhZ2VVUkwoY29uc3QgUVN0cmluZyYgcGFnZVVSTCkKIHsKLSAgICBtX2ljb25EYXRhYmFzZS0+
cmVsZWFzZUljb25Gb3JQYWdlVVJMKHBhZ2VVUkwpOworICAgIFdLSWNvbkRhdGFiYXNlUmVsZWFz
ZUljb25Gb3JVUkwobV9pY29uRGF0YWJhc2UsIGFkb3B0V0soV0tVUkxDcmVhdGVXaXRoUVN0cmlu
ZyhwYWdlVVJMKSkuZ2V0KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYkljb25EYXRhYmFzZUNsaWVudC5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgK
aW5kZXggOWI1MzA3ZjFlYzQyOTBjNDA4OTMzYjllNzU4YjQ4OTQ0NWZlZDNiNy4uNjliNzk2NWVk
YzNjNDA3ODBiZDgzNWM3NWZlNTA1ZDA0Y2FkZTcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmgKQEAgLTIxLDEyICsy
MSw5IEBACiAjaWZuZGVmIFF0V2ViSWNvbkRhdGFiYXNlQ2xpZW50X2gKICNkZWZpbmUgUXRXZWJJ
Y29uRGF0YWJhc2VDbGllbnRfaAogCi0jaW5jbHVkZSAiV0tJY29uRGF0YWJhc2UuaCIKICNpbmNs
dWRlICJxd2Via2l0Z2xvYmFsLmgiCiAjaW5jbHVkZSA8UXRDb3JlL1FPYmplY3Q+Ci0jaW5jbHVk
ZSA8UXRDb3JlL1FTaXplPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYv
VGhyZWFkaW5nLmg+CisjaW5jbHVkZSA8V0tJY29uRGF0YWJhc2UuaD4KIAogUVRfQkVHSU5fTkFN
RVNQQUNFCiBjbGFzcyBRSW1hZ2U7CkBAIC0zNSwyOSArMzIsMjYgQEAgUVRfRU5EX05BTUVTUEFD
RQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV2ViQ29udGV4dDsKLWNsYXNzIFdlYklj
b25EYXRhYmFzZTsKLQogY2xhc3MgUXRXZWJJY29uRGF0YWJhc2VDbGllbnQgOiBwdWJsaWMgUU9i
amVjdCB7CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgotICAgIFF0V2ViSWNvbkRhdGFiYXNlQ2xp
ZW50KFdlYkNvbnRleHQqKTsKKyAgICBRdFdlYkljb25EYXRhYmFzZUNsaWVudChXS0NvbnRleHRS
ZWYpOwogICAgIH5RdFdlYkljb25EYXRhYmFzZUNsaWVudCgpOwogCi0gICAgUVVybCBpY29uRm9y
UGFnZVVSTChjb25zdCBRU3RyaW5nJiBwYWdlVVJMKTsKLSAgICBRSW1hZ2UgaWNvbkltYWdlRm9y
UGFnZVVSTChjb25zdCBRU3RyaW5nJiBwYWdlVVJMLCBjb25zdCBRU2l6ZSYgaWNvblNpemUgPSBR
U2l6ZSgzMiwgMzIpKTsKKyAgICBRSW1hZ2UgaWNvbkltYWdlRm9yUGFnZVVSTChjb25zdCBRU3Ry
aW5nJik7CiAKICAgICB2b2lkIHJldGFpbkljb25Gb3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmKTsK
ICAgICB2b2lkIHJlbGVhc2VJY29uRm9yUGFnZVVSTChjb25zdCBRU3RyaW5nJik7CiAKKyAgICBz
dGF0aWMgdW5zaWduZWQgdXBkYXRlSUQoKTsKKwogcHVibGljOgogICAgIFFfU0lHTkFMIHZvaWQg
aWNvbkNoYW5nZWRGb3JQYWdlVVJMKGNvbnN0IFFTdHJpbmcmIHBhZ2VVUkwpOwogCiBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUljb25Gb3JQYWdlVVJMKFdLSWNvbkRhdGFiYXNl
UmVmLCBXS1VSTFJlZiBwYWdlVVJMLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBSZWZQ
dHI8V2ViS2l0OjpXZWJJY29uRGF0YWJhc2U+IG1faWNvbkRhdGFiYXNlOwotICAgIE11dGV4IG1f
aW1hZ2VMb2NrOworICAgIFdLSWNvbkRhdGFiYXNlUmVmIG1faWNvbkRhdGFiYXNlOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
LnByaSBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCmluZGV4IDVjMzVkYTQxNGM4NzM5ODRl
ZWUwY2IyNTY0MjJmZTA5NjM4MjhmNzEuLjVhZmY2NmUxNTEwZDlhYTU3NDMxNzMyZTI4YzE1MmY2
MTVjOGQ4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIucHJpCkBAIC0yOCw2ICsyOCw3IEBAIElOQ0xVREVQQVRIICs9
IFwKICAgICAkJFNPVVJDRV9ESVIvU2hhcmVkL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9j
ZXNzIFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0FQSS9DIFwKKyAgICAkJFNPVVJDRV9E
SVIvVUlQcm9jZXNzL0FQSS9DL3F0IFwKICAgICAkJFNPVVJDRV9ESVIvVUlQcm9jZXNzL0FQSS9j
cHAgXAogICAgICQkU09VUkNFX0RJUi9VSVByb2Nlc3MvQVBJL2NwcC9xdCBcCiAgICAgJCRTT1VS
Q0VfRElSL1VJUHJvY2Vzcy9BUEkvcXQgXAo=
</data>
<flag name="review"
          id="212790"
          type_id="1"
          status="+"
          setter="hausmann"
    />
          </attachment>
      

    </bug>

</bugzilla>