<?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>64362</bug_id>
          
          <creation_ts>2011-07-12 08:24:37 -0700</creation_ts>
          <short_desc>[Qt][WK2] Add informative loadFailed() signal to web views.</short_desc>
          <delta_ts>2011-07-12 13:22:12 -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>WebKit Qt</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>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>benjamin</cc>
    
    <cc>kenneth</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435658</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 08:24:37 -0700</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435659</commentid>
    <comment_count>1</comment_count>
      <attachid>100488</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 08:26:27 -0700</bug_when>
    <thetext>Created attachment 100488
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435660</commentid>
    <comment_count>2</comment_count>
      <attachid>100488</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 08:27:44 -0700</bug_when>
    <thetext>Comment on attachment 100488
Proposed patch

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

&gt; Source/WebKit2/UIProcess/API/qt/qweberror.cpp:81
&gt; +    WKRetainPtr&lt;WKURLRef&gt; failingURL = adoptWK(WKErrorCopyFailingURL(d-&gt;error.get()));
&gt; +    WKRetainPtr&lt;WKStringRef&gt; failingURLString = adoptWK(WKURLCopyString(failingURL.get()));
&gt; +    return QUrl(WKStringCopyQString(failingURLString.get()));

Whoops, just realized we have &quot;QUrl WKURLCopyQUrl(WKURLRef urlRef)&quot;, will use that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435661</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-12 08:29:11 -0700</bug_when>
    <thetext>Attachment 100488 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/ChangeLog&apos;, u&apos;Source/WebKit...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/qt/qweberror_p.h:24:  Header file should not contain WebCore config.h. Should be: alphabetically sorted.  [build/include_order] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435662</commentid>
    <comment_count>4</comment_count>
      <attachid>100489</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 08:31:50 -0700</bug_when>
    <thetext>Created attachment 100489
Proposed patch v2

Fixed style complaint and use WKURLQt convenience shizzle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435664</commentid>
    <comment_count>5</comment_count>
      <attachid>100489</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-12 08:33:21 -0700</bug_when>
    <thetext>Comment on attachment 100489
Proposed patch v2

Clearing the flag while Andreas add the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435671</commentid>
    <comment_count>6</comment_count>
      <attachid>100489</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-12 08:45:22 -0700</bug_when>
    <thetext>Comment on attachment 100489
Proposed patch v2

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

Clearing the flag while Andreas add the test.

&gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:43
&gt; +    int errorCode() const;

This could disappear in favor of errorCodeAsHttpStatusCode() const.

&gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:51
&gt; +    QWebError();

Oops

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:56
&gt; +    toQtWebPageProxy(clientInfo)-&gt;loadDidSucceed();
&gt; +    toQtWebPageProxy(clientInfo)-&gt;updateNavigationActions();

I would invert these calls.

&gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:65
&gt; +    toQtWebPageProxy(clientInfo)-&gt;loadDidFail(QWebErrorPrivate::createQWebError(error));
&gt;      toQtWebPageProxy(clientInfo)-&gt;updateNavigationActions();

Same here, so the actions are valid in the code taking care of loadFailed().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435672</commentid>
    <comment_count>7</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 08:46:46 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 100489 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100489&amp;action=review
&gt; 
&gt; Clearing the flag while Andreas add the test.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:43
&gt; &gt; +    int errorCode() const;
&gt; 
&gt; This could disappear in favor of errorCodeAsHttpStatusCode() const.

Fair enough. And we just don&apos;t make any promises about the &quot;engine errors&quot; for now.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:51
&gt; &gt; +    QWebError();
&gt; 
&gt; Oops

D&apos;oh.

&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:56
&gt; &gt; +    toQtWebPageProxy(clientInfo)-&gt;loadDidSucceed();
&gt; &gt; +    toQtWebPageProxy(clientInfo)-&gt;updateNavigationActions();
&gt; 
&gt; I would invert these calls.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/qt/ClientImpl.cpp:65
&gt; &gt; +    toQtWebPageProxy(clientInfo)-&gt;loadDidFail(QWebErrorPrivate::createQWebError(error));
&gt; &gt;      toQtWebPageProxy(clientInfo)-&gt;updateNavigationActions();
&gt; 
&gt; Same here, so the actions are valid in the code taking care of loadFailed().

Good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435681</commentid>
    <comment_count>8</comment_count>
      <attachid>100493</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 08:57:07 -0700</bug_when>
    <thetext>Created attachment 100493
Proposed patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435685</commentid>
    <comment_count>9</comment_count>
      <attachid>100493</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-12 09:08:16 -0700</bug_when>
    <thetext>Comment on attachment 100493
Proposed patch v3

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

&gt; Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:90
&gt; +    viewAbstraction-&gt;load(QUrl::fromLocalFile(QLatin1String(TESTS_SOURCE_DIR &quot;/html/kenneth_fanclub_members.html&quot;)));

I am not sure that is solid test. I can totally such a page in the tests in the near future ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435688</commentid>
    <comment_count>10</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 09:17:48 -0700</bug_when>
    <thetext>Committed r90820: &lt;http://trac.webkit.org/changeset/90820&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435895</commentid>
    <comment_count>11</comment_count>
      <attachid>100493</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-07-12 13:05:27 -0700</bug_when>
    <thetext>Comment on attachment 100493
Proposed patch v3

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

&gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:39
&gt; +        HttpError,

So what about HTTPS? SPYDY etc ... wouldn&apos;t ProtocolError be better?

&gt; Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:36
&gt; +    void loadNonexistentFileUrl();

NonExisting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435898</commentid>
    <comment_count>12</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-12 13:15:23 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:39
&gt; &gt; +        HttpError,
&gt; 
&gt; So what about HTTPS? SPYDY etc ... wouldn&apos;t ProtocolError be better?

We had a little discussion with Andreas about how simple can this API be while still being useful. We recognized having the HTTP status code is an important use case even for a very simple view.

The naming is probably not good enough if you thought that could be related to https, spydy, etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435899</commentid>
    <comment_count>13</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-12 13:17:17 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 100493 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=100493&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/qt/qweberror.h:39
&gt; &gt; +        HttpError,
&gt; 
&gt; So what about HTTPS? SPYDY etc ... wouldn&apos;t ProtocolError be better?

We can certainly tweak that and/or add more error types. Do note that this kind of error will only be emitted when the QNetworkReply has the QNetworkRequest::HttpStatusCodeAttribute set.

&gt; &gt; Source/WebKit2/UIProcess/API/qt/tests/commonviewtests/tst_commonviewtests.cpp:36
&gt; &gt; +    void loadNonexistentFileUrl();
&gt; 
&gt; NonExisting

http://www.thefreedictionary.com/nonexistent :3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435903</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-07-12 13:21:29 -0700</bug_when>
    <thetext>
&gt; We can certainly tweak that and/or add more error types. Do note that this kind of error will only be emitted when the QNetworkReply has the QNetworkRequest::HttpStatusCodeAttribute set.

Anyway, if Http covers https (which I assume) this should be fine.

&gt; &gt; NonExisting
&gt; 
&gt; http://www.thefreedictionary.com/nonexistent :3

Aha</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435905</commentid>
    <comment_count>15</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-07-12 13:22:12 -0700</bug_when>
    <thetext>Though, maybe HttpProtocolError is a better name (yes, I know the p in http means protocol, but how many things about that? :-))</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100488</attachid>
            <date>2011-07-12 08:26:27 -0700</date>
            <delta_ts>2011-07-12 08:31:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-64362.diff</filename>
            <type>text/plain</type>
            <size>18308</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkN2M3NGRkLi5iZTRhMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTEtMDctMTIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBBZGQgaW5mb3JtYXRpdmUgbG9hZEZhaWxlZCgpIHNpZ25hbCB0byB3ZWIg
dmlld3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSB3ZWIgdmlld3Mgd2lsbCBub3cgZW1pdCBsb2FkRmFpbGVkKFFXZWJFcnJvcikgd2hlbiBhIGxv
YWQgZmFpbHVyZSBvY2N1cnMuCisKKyAgICAgICAgVGhlIFFXZWJFcnJvciBvYmplY3QgY3VycmVu
dGx5IGNvbnRhaW5zOgorICAgICAgICAtIFR5cGUgb2YgZmFpbHVyZSAod2hldGhlciBpdCdzIGFu
IGVuZ2luZSwgbmV0d29yayBvciBwcm90b2NvbCBlcnJvci4pCisgICAgICAgIC0gVGhlIGZhaWxp
bmcgVVJMLgorICAgICAgICAtIEFueSBlcnJvciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFp
bHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRGYWlsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5j
cHA6IEFkZGVkLgorICAgICAgICAoUVdlYkVycm9yOjpRV2ViRXJyb3IpOgorICAgICAgICAoUVdl
YkVycm9yUHJpdmF0ZTo6Y3JlYXRlUVdlYkVycm9yKToKKyAgICAgICAgKFFXZWJFcnJvclByaXZh
dGU6OlFXZWJFcnJvclByaXZhdGUpOgorICAgICAgICAoUVdlYkVycm9yUHJpdmF0ZTo6flFXZWJF
cnJvclByaXZhdGUpOgorICAgICAgICAoUVdlYkVycm9yOjp0eXBlKToKKyAgICAgICAgKFFXZWJF
cnJvcjo6ZXJyb3JDb2RlKToKKyAgICAgICAgKFFXZWJFcnJvcjo6dXJsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJlcnJvcl9wLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCk6CisgICAgICAgIChk
aXNwYXRjaExvYWRGYWlsZWQpOgorICAgICAgICAocXRfd2tfZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKHF0X3drX2RpZEZpbmlzaExvYWRGb3JGcmFt
ZSk6CisgICAgICAgIChxdF93a19kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OmxvYWREaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkRmFpbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAgICAgICogV2ViS2l0MkFQSS5wcmk6CisKIDIwMTEt
MDctMTEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1b
V0syXSBNb3ZlIHpvb21hYmxlLWFyZWEtZm9yLXBvaW50IGZ1bmN0aW9uYWxpdHkgdG8gUVRvdWNo
V2ViUGFnZVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fk
ZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggNzgxM2VkNi4uZjZiNTBjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMTEy
LDYgKzExMiwxMSBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVk
KCkKICAgICBlbWl0IHEtPmxvYWRTdWNjZWVkZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOjpsb2FkRGlkRmFpbChjb25zdCBRV2ViRXJyb3ImIGVycm9yKQoreworICAgIGVt
aXQgcS0+bG9hZEZhaWxlZChlcnJvcik7Cit9CisKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCBwZXJjZW50YWdlTG9hZGVkKQogewogICAgIGVt
aXQgcS0+bG9hZFByb2dyZXNzKHBlcmNlbnRhZ2VMb2FkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKaW5kZXggZjA5ZGQ3NC4uYTZl
MjBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8UVVybD4KIAogY2xhc3MgUURl
c2t0b3BXZWJWaWV3UHJpdmF0ZTsKK2NsYXNzIFFXZWJFcnJvcjsKIAogbmFtZXNwYWNlIFdUUiB7
CiAgICAgY2xhc3MgV2ViVmlldzsKQEAgLTU2LDYgKzU3LDcgQEAgUV9TSUdOQUxTOgogICAgIHZv
aWQgc3RhdHVzQmFyTWVzc2FnZUNoYW5nZWQoY29uc3QgUVN0cmluZyYpOwogICAgIHZvaWQgbG9h
ZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKKyAgICB2b2lkIGxvYWRGYWls
ZWQoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3MoaW50IHByb2dyZXNz
KTsKICAgICB2b2lkIHVybENoYW5nZWQoY29uc3QgUVVybCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggYzFmMDBl
My4uODc5Nzg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQpOwogCiAgICAgdmlydHVhbCB2b2lkIHNo
b3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVudT4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCBhODhlY2MxLi40MmIzYjM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2Uu
aApAQCAtMjksNiArMjksNyBAQAogCiBjbGFzcyBRVG91Y2hXZWJQYWdlUHJpdmF0ZTsKIGNsYXNz
IFFUb3VjaFdlYlBhZ2VQcm94eTsKK2NsYXNzIFFXZWJFcnJvcjsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwpAQCAtNjIsNiArNjMsNyBAQCBRX1NJ
R05BTFM6CiAgICAgdm9pZCB0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYpOwogICAgIHZvaWQg
bG9hZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKKyAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3MoaW50IHByb2dy
ZXNzKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2ViZXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMmI0ODAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJl
cnJvci5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRy
ZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgInF3ZWJlcnJvci5oIgorCisjaW5jbHVkZSAicXdlYmVycm9yX3AuaCIKKyNpbmNsdWRl
IDxRdENvcmUvUVVybD4KKyNpbmNsdWRlIDxXS1NoYXJlZEFQSUNhc3QuaD4KKyNpbmNsdWRlIDxX
S1N0cmluZy5oPgorI2luY2x1ZGUgPFdLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXS1R5cGUuaD4K
KyNpbmNsdWRlIDxXS1VSTC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitRV2ViRXJy
b3I6OlFXZWJFcnJvcihRV2ViRXJyb3JQcml2YXRlKiBwcml2KQorICAgIDogZChwcml2KQorewor
fQorCitRV2ViRXJyb3I6OlFXZWJFcnJvcihjb25zdCBRV2ViRXJyb3ImIG90aGVyKQorICAgIDog
ZChvdGhlci5kKQoreworfQorCitRV2ViRXJyb3IgUVdlYkVycm9yUHJpdmF0ZTo6Y3JlYXRlUVdl
YkVycm9yKFdLRXJyb3JSZWYgZXJyb3JSZWYpCit7CisgICAgcmV0dXJuIFFXZWJFcnJvcihuZXcg
UVdlYkVycm9yUHJpdmF0ZShlcnJvclJlZikpOworfQorCitRV2ViRXJyb3JQcml2YXRlOjpRV2Vi
RXJyb3JQcml2YXRlKFdLRXJyb3JSZWYgZXJyb3JSZWYpCisgICAgOiBlcnJvcihlcnJvclJlZikK
K3sKK30KKworUVdlYkVycm9yUHJpdmF0ZTo6flFXZWJFcnJvclByaXZhdGUoKQoreworfQorCitR
V2ViRXJyb3I6OlR5cGUgUVdlYkVycm9yOjp0eXBlKCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZXJyb3JEb21haW5QdHIgPSBhZG9wdFdLKFdLRXJyb3JDb3B5RG9tYWlu
KGQtPmVycm9yLmdldCgpKSk7CisgICAgV1RGOjpTdHJpbmcgZXJyb3JEb21haW4gPSB0b1dURlN0
cmluZyhlcnJvckRvbWFpblB0ci5nZXQoKSk7CisKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gIlF0
TmV0d29yayIpCisgICAgICAgIHJldHVybiBRV2ViRXJyb3I6Ok5ldHdvcmtFcnJvcjsKKyAgICBp
ZiAoZXJyb3JEb21haW4gPT0gIkhUVFAiKQorICAgICAgICByZXR1cm4gUVdlYkVycm9yOjpIdHRw
RXJyb3I7CisgICAgLy8gRklYTUU6IFJlZGlyZWN0aW9uIG92ZXJmbG93IGN1cnJlbnRseSBwdXRz
IHRoZSBVUkwgaG9zdG5hbWUgaW4gdGhlIGVycm9yRG9tYWluIGZpZWxkLgorICAgIC8vICAgICAg
ICBXZSBzaG91bGQgZXhwb3NlIHRoYXQgZXJyb3Igc29tZWhvdy4gU291cmNlIGlzIFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjpyZWRpcmVjdCgpLgorICAgIHJldHVybiBRV2ViRXJyb3I6OkVuZ2luZUVy
cm9yOworfQorCitpbnQgUVdlYkVycm9yOjplcnJvckNvZGUoKSBjb25zdAoreworICAgIHJldHVy
biBXS0Vycm9yR2V0RXJyb3JDb2RlKGQtPmVycm9yLmdldCgpKTsKK30KKworUVVybCBRV2ViRXJy
b3I6OnVybCgpIGNvbnN0Cit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZhaWxpbmdVUkwg
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChkLT5lcnJvci5nZXQoKSkpOworICAgIFdL
UmV0YWluUHRyPFdLU3RyaW5nUmVmPiBmYWlsaW5nVVJMU3RyaW5nID0gYWRvcHRXSyhXS1VSTENv
cHlTdHJpbmcoZmFpbGluZ1VSTC5nZXQoKSkpOworICAgIHJldHVybiBRVXJsKFdLU3RyaW5nQ29w
eVFTdHJpbmcoZmFpbGluZ1VSTFN0cmluZy5nZXQoKSkpOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMjdiNGJmZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmVycm9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBbmRyZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBxd2Vi
ZXJyb3JfaAorI2RlZmluZSBxd2ViZXJyb3JfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5o
IgorI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+CisjaW5jbHVkZSA8UVNoYXJlZERhdGFQb2ludGVy
PgorCitjbGFzcyBRV2ViRXJyb3JQcml2YXRlOworCitRVF9CRUdJTl9OQU1FU1BBQ0UKK2NsYXNz
IFFVcmw7CitRVF9FTkRfTkFNRVNQQUNFCisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJFcnJv
ciB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgRW5naW5lRXJyb3IsCisgICAg
ICAgIE5ldHdvcmtFcnJvciwKKyAgICAgICAgSHR0cEVycm9yLAorICAgIH07CisKKyAgICBUeXBl
IHR5cGUoKSBjb25zdDsKKyAgICBpbnQgZXJyb3JDb2RlKCkgY29uc3Q7CisgICAgUVVybCB1cmwo
KSBjb25zdDsKKworICAgIFFOZXR3b3JrUmVwbHk6Ok5ldHdvcmtFcnJvciBlcnJvckNvZGVBc05l
dHdvcmtFcnJvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFFOZXR3b3JrUmVwbHk6Ok5l
dHdvcmtFcnJvcj4oZXJyb3JDb2RlKCkpOyB9CisKKyAgICBRV2ViRXJyb3IoY29uc3QgUVdlYkVy
cm9yJik7CisKK3ByaXZhdGU6CisgICAgUVdlYkVycm9yKCk7CisgICAgUVdlYkVycm9yKFFXZWJF
cnJvclByaXZhdGUqKTsKKworICAgIFFTaGFyZWREYXRhUG9pbnRlcjxRV2ViRXJyb3JQcml2YXRl
PiBkOworICAgIGZyaWVuZCBjbGFzcyBRV2ViRXJyb3JQcml2YXRlOworfTsKKworI2VuZGlmIC8q
IHF3ZWJlcnJvcl9oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3ZWJlcnJvcl9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJl
cnJvcl9wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMyNTMzMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9y
X3AuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJlYXMg
S2xpbmcgPGtsaW5nQHdlYmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIHF3ZWJlcnJvcl9wX2gKKyNkZWZp
bmUgcXdlYmVycm9yX3BfaAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmVy
cm9yLmgiCisjaW5jbHVkZSA8UXRDb3JlL1FTaGFyZWREYXRhPgorI2luY2x1ZGUgPFdLRXJyb3Iu
aD4KKyNpbmNsdWRlIDxXS1JldGFpblB0ci5oPgorCitjbGFzcyBRV2ViRXJyb3JQcml2YXRlIDog
cHVibGljIFFTaGFyZWREYXRhIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUVdlYkVycm9yIGNyZWF0
ZVFXZWJFcnJvcihXS0Vycm9yUmVmKTsKKyAgICBRV2ViRXJyb3JQcml2YXRlKFdLRXJyb3JSZWYp
OworICAgIH5RV2ViRXJyb3JQcml2YXRlKCk7CisKKyAgICBXS1JldGFpblB0cjxXS0Vycm9yUmVm
PiBlcnJvcjsKK307CisKKyNlbmRpZiAvKiBxd2ViZXJyb3JfcF9oICovCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1wbC5jcHAKaW5kZXggN2ZkZmU2Zi4uMTQ2NWVlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcApAQCAtMjQsNiArMjQs
OCBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLU3RyaW5nUXQuaCIKICNp
bmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSAicXdlYmVycm9yLmgiCisjaW5jbHVkZSAicXdl
YmVycm9yX3AuaCIKICNpbmNsdWRlIDxxd2tjb250ZXh0Lmg+CiAjaW5jbHVkZSA8UXRXZWJQYWdl
UHJveHkuaD4KICNpbmNsdWRlIDxXS0ZyYW1lLmg+CkBAIC00NSwxNSArNDcsMjEgQEAgc3RhdGlj
IFF0V2ViUGFnZVByb3h5KiB0b1F0V2ViUGFnZVByb3h5KGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGxvYWRGaW5pc2hlZChXS0ZyYW1lUmVm
IGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvLCBib29sIG9rKQorc3RhdGljIHZvaWQgZGlz
cGF0Y2hMb2FkU3VjY2VlZGVkKFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pCiB7CiAgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKG9rKQotICAgICAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5s
b2FkRGlkU3VjY2VlZCgpOwotICAgIGVsc2UgewotICAgICAgICAvLyBGSVhNRTogbG9hZERpZEZh
aWwoKS4KLSAgICB9CisKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5sb2FkRGlk
U3VjY2VlZCgpOworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVwZGF0ZU5hdmln
YXRpb25BY3Rpb25zKCk7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BhdGNoTG9hZEZhaWxlZChXS0Zy
YW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvLCBXS0Vycm9yUmVmIGVycm9yKQor
eworICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZyYW1lKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZvKS0+bG9hZERpZEZhaWwoUVdlYkVycm9y
UHJpdmF0ZTo6Y3JlYXRlUVdlYkVycm9yKGVycm9yKSk7CiAgICAgdG9RdFdlYlBhZ2VQcm94eShj
bGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKIH0KIApAQCAtNzEsNyArNzks
NyBAQCB2b2lkIHF0X3drX2RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXSwogCiB2b2lkIHF0X3drX2RpZEZhaWxQcm92aXNp
b25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFt
ZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQogewotICAgIGxvYWRGaW5pc2hlZChmcmFtZSwgY2xpZW50SW5mbywgZmFsc2UpOwor
ICAgIGRpc3BhdGNoTG9hZEZhaWxlZChmcmFtZSwgY2xpZW50SW5mbywgZXJyb3IpOwogfQogCiB2
b2lkIHF0X3drX2RpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAt
OTIsMTIgKzEwMCwxMiBAQCB2b2lkIHF0X3drX2RpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cAogCiB2b2lkIHF0X3drX2Rp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tU
eXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGxvYWRGaW5p
c2hlZChmcmFtZSwgY2xpZW50SW5mbywgdHJ1ZSk7CisgICAgZGlzcGF0Y2hMb2FkU3VjY2VlZGVk
KGZyYW1lLCBjbGllbnRJbmZvKTsKIH0KIAogdm9pZCBxdF93a19kaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVy
cm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAg
bG9hZEZpbmlzaGVkKGZyYW1lLCBjbGllbnRJbmZvLCBmYWxzZSk7CisgICAgZGlzcGF0Y2hMb2Fk
RmFpbGVkKGZyYW1lLCBjbGllbnRJbmZvLCBlcnJvcik7CiB9CiAKIHZvaWQgcXRfd2tfZGlkUmVj
ZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRl
eCBmNTA3YjAxLi4xMzYyMWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHAKQEAgLTQ1NSw2ICs0NTUsMTEgQEAgdm9pZCBRdFdlYlBhZ2VQcm94
eTo6bG9hZERpZFN1Y2NlZWQoKQogICAgIG1fdmlld0ludGVyZmFjZS0+bG9hZERpZFN1Y2NlZWQo
KTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6bG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9y
JiBlcnJvcikKK3sKKyAgICBtX3ZpZXdJbnRlcmZhY2UtPmxvYWREaWRGYWlsKGVycm9yKTsKK30K
Kwogdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCBuZXdMb2Fk
UHJvZ3Jlc3MpCiB7CiAgICAgbV92aWV3SW50ZXJmYWNlLT5kaWRDaGFuZ2VMb2FkUHJvZ3Jlc3Mo
bmV3TG9hZFByb2dyZXNzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFn
ZVByb3h5LmgKaW5kZXggNTc1ZmQyYy4uYmYzMjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJW
aWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIlZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXS0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPFFCYXNpY1RpbWVyPgogI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+
CkBAIC0xNDgsNiArMTQ5LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkRGlkQmVnaW4oKTsK
ICAgICB2b2lkIGxvYWREaWRTdWNjZWVkKCk7CisgICAgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBR
V2ViRXJyb3ImKTsKICAgICB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQpOwogCiAgICAg
dm9pZCBwYWludChRUGFpbnRlciogcGFpbnRlciwgUVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcAppbmRleCAzZTEzYTlmLi44
OGViMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3
SW50ZXJmYWNlLmNwcApAQCAtMTI4LDYgKzEyOCwxMSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFj
ZTo6bG9hZERpZFN1Y2NlZWQoKQogICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZFN1Y2NlZWRlZCgp
OwogfQogCit2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZEZhaWwoY29uc3QgUVdlYkVy
cm9yJiBlcnJvcikKK3sKKyAgICBlbWl0IG1fcGFnZVZpZXctPmxvYWRGYWlsZWQoZXJyb3IpOwor
fQorCiB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCBw
ZXJjZW50YWdlTG9hZGVkKQogewogICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZFByb2dyZXNzKHBl
cmNlbnRhZ2VMb2FkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1RvdWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNo
Vmlld0ludGVyZmFjZS5oCmluZGV4IGY1NjhkZjkuLmY5YmYzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKQEAgLTU5LDYgKzU5LDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJz
b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEJlZ2luKCk7CiAgICAgdmlydHVhbCB2b2lk
IGxvYWREaWRTdWNjZWVkKCk7CisgICAgdmlydHVhbCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFX
ZWJFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsK
IAogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNl
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCmluZGV4IDBm
ZDg5ZjcuLjgzYzA3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9W
aWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRl
cmZhY2UuaApAQCAtMjUsNiArMjUsOCBAQAogI2luY2x1ZGUgPFF0Q29yZS9RU2l6ZT4KICNpbmNs
dWRlIDxRdEd1aS9RTWVudT4KIAorY2xhc3MgUVdlYkVycm9yOworCiBRVF9CRUdJTl9OQU1FU1BB
Q0UKIGNsYXNzIFFDdXJzb3I7CiBjbGFzcyBRR3JhcGhpY3NXaWRnZXQ7CkBAIC01OSw2ICs2MSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJz
b3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRCZWdpbigpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGxvYWREaWRG
YWlsKGNvbnN0IFFXZWJFcnJvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9h
ZFByb2dyZXNzKGludCkgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShR
U2hhcmVkUG9pbnRlcjxRTWVudT4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YktpdDJBUEkucHJpIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKaW5kZXggZWNhMjBm
Mi4uZDcwYWM2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKQEAgLTYsNiArNiw3IEBAIFdFQktJVDJf
QVBJX1NPVVJDRVMgPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hh
cmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAgXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0Vycm9yLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVk
L0FQSS9jL1dLR3JhcGhpY3NDb250ZXh0LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIv
U2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAgXApAQCAtNDcsNiArNDgsNyBAQCBXRUJL
SVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcCBcCisgICAgJCRTT1VSQ0VfRElS
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuY3BwIFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAgXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJ
dGVtLmNwcCBcCkBAIC02OSw2ICs3MSw3IEBAIFdFQktJVDJfQVBJX0hFQURFUlMgKz0gXAogICAg
ICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5oIFwK
ICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1U
eXBlcy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEaWN0aW9u
YXJ5LmggXAorICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yLmgg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmggXAog
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0dyYXBoaWNzQ29udGV4dC5o
IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5oIFwKQEAg
LTEyNSw2ICsxMjgsOCBAQCBXRUJLSVQyX0FQSV9IRUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuaCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaCBc
CisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaCBc
CisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3JfcC5o
IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0eXBl
cy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExp
c3RJdGVtLmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100489</attachid>
            <date>2011-07-12 08:31:50 -0700</date>
            <delta_ts>2011-07-12 08:57:07 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-64362-v2.diff</filename>
            <type>text/plain</type>
            <size>18208</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkN2M3NGRkLi5iZTRhMDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcg
QEAKKzIwMTEtMDctMTIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBBZGQgaW5mb3JtYXRpdmUgbG9hZEZhaWxlZCgpIHNpZ25hbCB0byB3ZWIg
dmlld3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSB3ZWIgdmlld3Mgd2lsbCBub3cgZW1pdCBsb2FkRmFpbGVkKFFXZWJFcnJvcikgd2hlbiBhIGxv
YWQgZmFpbHVyZSBvY2N1cnMuCisKKyAgICAgICAgVGhlIFFXZWJFcnJvciBvYmplY3QgY3VycmVu
dGx5IGNvbnRhaW5zOgorICAgICAgICAtIFR5cGUgb2YgZmFpbHVyZSAod2hldGhlciBpdCdzIGFu
IGVuZ2luZSwgbmV0d29yayBvciBwcm90b2NvbCBlcnJvci4pCisgICAgICAgIC0gVGhlIGZhaWxp
bmcgVVJMLgorICAgICAgICAtIEFueSBlcnJvciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFp
bHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRGYWlsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5j
cHA6IEFkZGVkLgorICAgICAgICAoUVdlYkVycm9yOjpRV2ViRXJyb3IpOgorICAgICAgICAoUVdl
YkVycm9yUHJpdmF0ZTo6Y3JlYXRlUVdlYkVycm9yKToKKyAgICAgICAgKFFXZWJFcnJvclByaXZh
dGU6OlFXZWJFcnJvclByaXZhdGUpOgorICAgICAgICAoUVdlYkVycm9yUHJpdmF0ZTo6flFXZWJF
cnJvclByaXZhdGUpOgorICAgICAgICAoUVdlYkVycm9yOjp0eXBlKToKKyAgICAgICAgKFFXZWJF
cnJvcjo6ZXJyb3JDb2RlKToKKyAgICAgICAgKFFXZWJFcnJvcjo6dXJsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJlcnJvcl9wLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9DbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKGRpc3BhdGNoTG9hZFN1Y2NlZWRlZCk6CisgICAgICAgIChk
aXNwYXRjaExvYWRGYWlsZWQpOgorICAgICAgICAocXRfd2tfZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAgICAgKHF0X3drX2RpZEZpbmlzaExvYWRGb3JGcmFt
ZSk6CisgICAgICAgIChxdF93a19kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoUXRXZWJQYWdl
UHJveHk6OmxvYWREaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkRmFpbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAgICAgICogV2ViS2l0MkFQSS5wcmk6CisKIDIwMTEt
MDctMTEgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1b
V0syXSBNb3ZlIHpvb21hYmxlLWFyZWEtZm9yLXBvaW50IGZ1bmN0aW9uYWxpdHkgdG8gUVRvdWNo
V2ViUGFnZVByb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FkZXNrdG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fk
ZXNrdG9wd2Vidmlldy5jcHAKaW5kZXggNzgxM2VkNi4uZjZiNTBjOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAtMTEy
LDYgKzExMiwxMSBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRTdWNjZWVk
KCkKICAgICBlbWl0IHEtPmxvYWRTdWNjZWVkZWQoKTsKIH0KIAordm9pZCBRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOjpsb2FkRGlkRmFpbChjb25zdCBRV2ViRXJyb3ImIGVycm9yKQoreworICAgIGVt
aXQgcS0+bG9hZEZhaWxlZChlcnJvcik7Cit9CisKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCBwZXJjZW50YWdlTG9hZGVkKQogewogICAgIGVt
aXQgcS0+bG9hZFByb2dyZXNzKHBlcmNlbnRhZ2VMb2FkZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKaW5kZXggZjA5ZGQ3NC4uYTZl
MjBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSA8UVVybD4KIAogY2xhc3MgUURl
c2t0b3BXZWJWaWV3UHJpdmF0ZTsKK2NsYXNzIFFXZWJFcnJvcjsKIAogbmFtZXNwYWNlIFdUUiB7
CiAgICAgY2xhc3MgV2ViVmlldzsKQEAgLTU2LDYgKzU3LDcgQEAgUV9TSUdOQUxTOgogICAgIHZv
aWQgc3RhdHVzQmFyTWVzc2FnZUNoYW5nZWQoY29uc3QgUVN0cmluZyYpOwogICAgIHZvaWQgbG9h
ZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKKyAgICB2b2lkIGxvYWRGYWls
ZWQoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3MoaW50IHByb2dyZXNz
KTsKICAgICB2b2lkIHVybENoYW5nZWQoY29uc3QgUVVybCYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKaW5kZXggYzFmMDBl
My4uODc5Nzg3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXdfcC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cWRlc2t0b3B3ZWJ2aWV3X3AuaApAQCAtNTgsNiArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBsb2FkRGlkQmVnaW4oKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZUxvYWRQcm9ncmVzcyhpbnQpOwogCiAgICAgdmlydHVhbCB2b2lkIHNo
b3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVudT4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaAppbmRleCBhODhlY2MxLi40MmIzYjM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBh
Z2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2Uu
aApAQCAtMjksNiArMjksNyBAQAogCiBjbGFzcyBRVG91Y2hXZWJQYWdlUHJpdmF0ZTsKIGNsYXNz
IFFUb3VjaFdlYlBhZ2VQcm94eTsKK2NsYXNzIFFXZWJFcnJvcjsKIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAgICAgY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwpAQCAtNjIsNiArNjMsNyBAQCBRX1NJ
R05BTFM6CiAgICAgdm9pZCB0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmluZyYpOwogICAgIHZvaWQg
bG9hZFN0YXJ0ZWQoKTsKICAgICB2b2lkIGxvYWRTdWNjZWVkZWQoKTsKKyAgICB2b2lkIGxvYWRG
YWlsZWQoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdm9pZCBsb2FkUHJvZ3Jlc3MoaW50IHByb2dy
ZXNzKTsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xd2ViZXJyb3IuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
d2ViZXJyb3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYWIyNWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJl
cnJvci5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBbmRy
ZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3JnPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgInF3ZWJlcnJvci5oIgorCisjaW5jbHVkZSAicXdlYmVycm9yX3AuaCIKKyNpbmNsdWRl
IDxRdENvcmUvUVVybD4KKyNpbmNsdWRlIDxXS1NoYXJlZEFQSUNhc3QuaD4KKyNpbmNsdWRlIDxX
S1N0cmluZy5oPgorI2luY2x1ZGUgPFdLU3RyaW5nUXQuaD4KKyNpbmNsdWRlIDxXS1R5cGUuaD4K
KyNpbmNsdWRlIDxXS1VSTC5oPgorI2luY2x1ZGUgPFdLVVJMUXQuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKKworUVdlYkVycm9yOjpRV2ViRXJyb3IoUVdlYkVycm9yUHJpdmF0ZSogcHJp
dikKKyAgICA6IGQocHJpdikKK3sKK30KKworUVdlYkVycm9yOjpRV2ViRXJyb3IoY29uc3QgUVdl
YkVycm9yJiBvdGhlcikKKyAgICA6IGQob3RoZXIuZCkKK3sKK30KKworUVdlYkVycm9yIFFXZWJF
cnJvclByaXZhdGU6OmNyZWF0ZVFXZWJFcnJvcihXS0Vycm9yUmVmIGVycm9yUmVmKQoreworICAg
IHJldHVybiBRV2ViRXJyb3IobmV3IFFXZWJFcnJvclByaXZhdGUoZXJyb3JSZWYpKTsKK30KKwor
UVdlYkVycm9yUHJpdmF0ZTo6UVdlYkVycm9yUHJpdmF0ZShXS0Vycm9yUmVmIGVycm9yUmVmKQor
ICAgIDogZXJyb3IoZXJyb3JSZWYpCit7Cit9CisKK1FXZWJFcnJvclByaXZhdGU6On5RV2ViRXJy
b3JQcml2YXRlKCkKK3sKK30KKworUVdlYkVycm9yOjpUeXBlIFFXZWJFcnJvcjo6dHlwZSgpIGNv
bnN0Cit7CisgICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGVycm9yRG9tYWluUHRyID0gYWRv
cHRXSyhXS0Vycm9yQ29weURvbWFpbihkLT5lcnJvci5nZXQoKSkpOworICAgIFdURjo6U3RyaW5n
IGVycm9yRG9tYWluID0gdG9XVEZTdHJpbmcoZXJyb3JEb21haW5QdHIuZ2V0KCkpOworCisgICAg
aWYgKGVycm9yRG9tYWluID09ICJRdE5ldHdvcmsiKQorICAgICAgICByZXR1cm4gUVdlYkVycm9y
OjpOZXR3b3JrRXJyb3I7CisgICAgaWYgKGVycm9yRG9tYWluID09ICJIVFRQIikKKyAgICAgICAg
cmV0dXJuIFFXZWJFcnJvcjo6SHR0cEVycm9yOworICAgIC8vIEZJWE1FOiBSZWRpcmVjdGlvbiBv
dmVyZmxvdyBjdXJyZW50bHkgcHV0cyB0aGUgVVJMIGhvc3RuYW1lIGluIHRoZSBlcnJvckRvbWFp
biBmaWVsZC4KKyAgICAvLyAgICAgICAgV2Ugc2hvdWxkIGV4cG9zZSB0aGF0IGVycm9yIHNvbWVo
b3cuIFNvdXJjZSBpcyBRTmV0d29ya1JlcGx5SGFuZGxlcjo6cmVkaXJlY3QoKS4KKyAgICByZXR1
cm4gUVdlYkVycm9yOjpFbmdpbmVFcnJvcjsKK30KKworaW50IFFXZWJFcnJvcjo6ZXJyb3JDb2Rl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gV0tFcnJvckdldEVycm9yQ29kZShkLT5lcnJvci5nZXQo
KSk7Cit9CisKK1FVcmwgUVdlYkVycm9yOjp1cmwoKSBjb25zdAoreworICAgIFdLUmV0YWluUHRy
PFdLVVJMUmVmPiBmYWlsaW5nVVJMID0gYWRvcHRXSyhXS0Vycm9yQ29weUZhaWxpbmdVUkwoZC0+
ZXJyb3IuZ2V0KCkpKTsKKyAgICByZXR1cm4gV0tVUkxDb3B5UVVybChmYWlsaW5nVVJMLmdldCgp
KTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVy
cm9yLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiODI3ZGIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oCkBAIC0wLDAgKzEs
NTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmVhcyBLbGluZyA8a2xpbmdAd2Vi
a2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgcXdlYmVycm9yX2gKKyNkZWZpbmUgcXdlYmVycm9yX2gKKwor
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKKyNpbmNsdWRlIDxRU2hhcmVkRGF0YVBvaW50ZXI+
CisjaW5jbHVkZSA8UXROZXR3b3JrL1FOZXR3b3JrUmVwbHk+CisKK2NsYXNzIFFXZWJFcnJvclBy
aXZhdGU7CisKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVybDsKK1FUX0VORF9OQU1FU1BB
Q0UKKworY2xhc3MgUVdFQktJVF9FWFBPUlQgUVdlYkVycm9yIHsKK3B1YmxpYzoKKyAgICBlbnVt
IFR5cGUgeworICAgICAgICBFbmdpbmVFcnJvciwKKyAgICAgICAgTmV0d29ya0Vycm9yLAorICAg
ICAgICBIdHRwRXJyb3IsCisgICAgfTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0OworICAgIGlu
dCBlcnJvckNvZGUoKSBjb25zdDsKKyAgICBRVXJsIHVybCgpIGNvbnN0OworCisgICAgUU5ldHdv
cmtSZXBseTo6TmV0d29ya0Vycm9yIGVycm9yQ29kZUFzTmV0d29ya0Vycm9yKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yPihlcnJvckNvZGUo
KSk7IH0KKworICAgIFFXZWJFcnJvcihjb25zdCBRV2ViRXJyb3ImKTsKKworcHJpdmF0ZToKKyAg
ICBRV2ViRXJyb3IoKTsKKyAgICBRV2ViRXJyb3IoUVdlYkVycm9yUHJpdmF0ZSopOworCisgICAg
UVNoYXJlZERhdGFQb2ludGVyPFFXZWJFcnJvclByaXZhdGU+IGQ7CisgICAgZnJpZW5kIGNsYXNz
IFFXZWJFcnJvclByaXZhdGU7Cit9OworCisjZW5kaWYgLyogcXdlYmVycm9yX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yX3AuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yX3AuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWI4OGYyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3JfcC5oCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5kcmVhcyBLbGluZyA8a2xpbmdAd2Via2l0Lm9y
Zz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBw
cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNpZm5kZWYgcXdlYmVycm9yX3BfaAorI2RlZmluZSBxd2ViZXJyb3JfcF9oCisKKyNp
bmNsdWRlICJxd2ViZXJyb3IuaCIKKyNpbmNsdWRlIDxRdENvcmUvUVNoYXJlZERhdGE+CisjaW5j
bHVkZSA8V0tFcnJvci5oPgorI2luY2x1ZGUgPFdLUmV0YWluUHRyLmg+CisKK2NsYXNzIFFXZWJF
cnJvclByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERhdGEgeworcHVibGljOgorICAgIHN0YXRpYyBR
V2ViRXJyb3IgY3JlYXRlUVdlYkVycm9yKFdLRXJyb3JSZWYpOworICAgIFFXZWJFcnJvclByaXZh
dGUoV0tFcnJvclJlZik7CisgICAgflFXZWJFcnJvclByaXZhdGUoKTsKKworICAgIFdLUmV0YWlu
UHRyPFdLRXJyb3JSZWY+IGVycm9yOworfTsKKworI2VuZGlmIC8qIHF3ZWJlcnJvcl9wX2ggKi8K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9DbGllbnRJbXBsLmNwcAppbmRleCA3ZmRmZTZm
Li4xNDY1ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3Bw
CkBAIC0yNCw2ICsyNCw4IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tT
dHJpbmdRdC5oIgogI2luY2x1ZGUgIldLVVJMUXQuaCIKKyNpbmNsdWRlICJxd2ViZXJyb3IuaCIK
KyNpbmNsdWRlICJxd2ViZXJyb3JfcC5oIgogI2luY2x1ZGUgPHF3a2NvbnRleHQuaD4KICNpbmNs
dWRlIDxRdFdlYlBhZ2VQcm94eS5oPgogI2luY2x1ZGUgPFdLRnJhbWUuaD4KQEAgLTQ1LDE1ICs0
NywyMSBAQCBzdGF0aWMgUXRXZWJQYWdlUHJveHkqIHRvUXRXZWJQYWdlUHJveHkoY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgbG9hZEZpbmlz
aGVkKFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8sIGJvb2wgb2spCitz
dGF0aWMgdm9pZCBkaXNwYXRjaExvYWRTdWNjZWVkZWQoV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKIHsKICAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkp
CiAgICAgICAgIHJldHVybjsKLSAgICBpZiAob2spCi0gICAgICAgIHRvUXRXZWJQYWdlUHJveHko
Y2xpZW50SW5mbyktPmxvYWREaWRTdWNjZWVkKCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBsb2FkRGlkRmFpbCgpLgotICAgIH0KKworICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50
SW5mbyktPmxvYWREaWRTdWNjZWVkKCk7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZv
KS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKK30KKworc3RhdGljIHZvaWQgZGlzcGF0Y2hM
b2FkRmFpbGVkKFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8sIFdLRXJy
b3JSZWYgZXJyb3IpCit7CisgICAgaWYgKCFXS0ZyYW1lSXNNYWluRnJhbWUoZnJhbWUpKQorICAg
ICAgICByZXR1cm47CisKKyAgICB0b1F0V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT5sb2FkRGlk
RmFpbChRV2ViRXJyb3JQcml2YXRlOjpjcmVhdGVRV2ViRXJyb3IoZXJyb3IpKTsKICAgICB0b1F0
V2ViUGFnZVByb3h5KGNsaWVudEluZm8pLT51cGRhdGVOYXZpZ2F0aW9uQWN0aW9ucygpOwogfQog
CkBAIC03MSw3ICs3OSw3IEBAIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLCiAKIHZvaWQgcXRfd2tf
ZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBX
S0ZyYW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgbG9hZEZpbmlzaGVkKGZyYW1lLCBjbGllbnRJ
bmZvLCBmYWxzZSk7CisgICAgZGlzcGF0Y2hMb2FkRmFpbGVkKGZyYW1lLCBjbGllbnRJbmZvLCBl
cnJvcik7CiB9CiAKIHZvaWQgcXRfd2tfZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBw
YWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pCkBAIC05MiwxMiArMTAwLDEyIEBAIHZvaWQgcXRfd2tfZGlkRmluaXNoRG9jdW1l
bnRMb2FkRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwCiAK
IHZvaWQgcXRfd2tfZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1l
UmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7
Ci0gICAgbG9hZEZpbmlzaGVkKGZyYW1lLCBjbGllbnRJbmZvLCB0cnVlKTsKKyAgICBkaXNwYXRj
aExvYWRTdWNjZWVkZWQoZnJhbWUsIGNsaWVudEluZm8pOwogfQogCiB2b2lkIHF0X3drX2RpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV0tQYWdlUmVmIHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUs
IFdLRXJyb3JSZWYgZXJyb3IsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICBsb2FkRmluaXNoZWQoZnJhbWUsIGNsaWVudEluZm8sIGZhbHNlKTsKKyAg
ICBkaXNwYXRjaExvYWRGYWlsZWQoZnJhbWUsIGNsaWVudEluZm8sIGVycm9yKTsKIH0KIAogdm9p
ZCBxdF93a19kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdS
ZWYgdGl0bGUsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdl
UHJveHkuY3BwCmluZGV4IGY1MDdiMDEuLjEzNjIxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcApAQCAtNDU1LDYgKzQ1NSwxMSBAQCB2b2lk
IFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkU3VjY2VlZCgpCiAgICAgbV92aWV3SW50ZXJmYWNlLT5s
b2FkRGlkU3VjY2VlZCgpOwogfQogCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkRGlkRmFpbChj
b25zdCBRV2ViRXJyb3ImIGVycm9yKQoreworICAgIG1fdmlld0ludGVyZmFjZS0+bG9hZERpZEZh
aWwoZXJyb3IpOworfQorCiB2b2lkIFF0V2ViUGFnZVByb3h5OjpkaWRDaGFuZ2VMb2FkUHJvZ3Jl
c3MoaW50IG5ld0xvYWRQcm9ncmVzcykKIHsKICAgICBtX3ZpZXdJbnRlcmZhY2UtPmRpZENoYW5n
ZUxvYWRQcm9ncmVzcyhuZXdMb2FkUHJvZ3Jlc3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCA1NzVmZDJjLi5iZjMyOGEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMzAsNiArMzAsNyBA
QAogI2luY2x1ZGUgIlZpZXdwb3J0QXJndW1lbnRzLmgiCiAjaW5jbHVkZSAiVmlld0ludGVyZmFj
ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1ZGUgPFdLRXJyb3IuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8UUJhc2ljVGltZXI+CiAjaW5jbHVkZSA8
UUdyYXBoaWNzVmlldz4KQEAgLTE0OCw2ICsxNDksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxv
YWREaWRCZWdpbigpOwogICAgIHZvaWQgbG9hZERpZFN1Y2NlZWQoKTsKKyAgICB2b2lkIGxvYWRE
aWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpOwogICAgIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNz
KGludCk7CiAKICAgICB2b2lkIHBhaW50KFFQYWludGVyKiBwYWludGVyLCBRUmVjdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCmlu
ZGV4IDNlMTNhOWYuLjg4ZWIxNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCkBAIC0xMjgsNiArMTI4LDExIEBAIHZvaWQgVG91
Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkU3VjY2VlZCgpCiAgICAgZW1pdCBtX3BhZ2VWaWV3LT5s
b2FkU3VjY2VlZGVkKCk7CiB9CiAKK3ZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpsb2FkRGlkRmFp
bChjb25zdCBRV2ViRXJyb3ImIGVycm9yKQoreworICAgIGVtaXQgbV9wYWdlVmlldy0+bG9hZEZh
aWxlZChlcnJvcik7Cit9CisKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpkaWRDaGFuZ2VMb2Fk
UHJvZ3Jlc3MoaW50IHBlcmNlbnRhZ2VMb2FkZWQpCiB7CiAgICAgZW1pdCBtX3BhZ2VWaWV3LT5s
b2FkUHJvZ3Jlc3MocGVyY2VudGFnZUxvYWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmgKaW5kZXggZjU2OGRmOS4uZjliZjMwMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuaApA
QCAtNTksNiArNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJz
b3IoY29uc3QgUUN1cnNvciYpOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkQmVnaW4oKTsKICAg
ICB2aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgbG9hZERp
ZEZhaWwoY29uc3QgUVdlYkVycm9yJik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUxvYWRQ
cm9ncmVzcyhpbnQpOwogCiAgICAgdmlydHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShRU2hhcmVk
UG9pbnRlcjxRTWVudT4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1ZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJm
YWNlLmgKaW5kZXggMGZkODlmNy4uODNjMDcyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvVmlld0ludGVyZmFjZS5oCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSA8UXRDb3Jl
L1FTaXplPgogI2luY2x1ZGUgPFF0R3VpL1FNZW51PgogCitjbGFzcyBRV2ViRXJyb3I7CisKIFFU
X0JFR0lOX05BTUVTUEFDRQogY2xhc3MgUUN1cnNvcjsKIGNsYXNzIFFHcmFwaGljc1dpZGdldDsK
QEAgLTU5LDYgKzYxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDdXJz
b3IoY29uc3QgUUN1cnNvciYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZEJlZ2luKCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgbG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJikgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hv
d0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51PikgPSAwOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnBy
aQppbmRleCBlY2EyMGYyLi5kNzBhYzY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJL
aXQyQVBJLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyQVBJLnByaQpAQCAtNiw2ICs2
LDcgQEAgV0VCS0lUMl9BUElfU09VUkNFUyA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwIFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmNwcCBcCisgICAgJCRTT1VSQ0Vf
RElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRXJyb3IuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIv
V2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tHcmFwaGljc0NvbnRleHQuY3BwIFwKICAgICAkJFNPVVJD
RV9ESVIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAgXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcCBcCkBAIC00Nyw2
ICs0OCw3IEBAIFdFQktJVDJfQVBJX1NPVVJDRVMgPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIFwKICAgICAkJFNPVVJDRV9E
SVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwIFwKICAgICAkJFNP
VVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIFwKKyAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAgXAog
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2Mv
V0tCdW5kbGUuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0LmNwcCBcCiAgICAgJCRTT1VS
Q0VfRElSL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJh
Y2tGb3J3YXJkTGlzdEl0ZW0uY3BwIFwKQEAgLTY5LDYgKzcxLDcgQEAgV0VCS0lUMl9BUElfSEVB
REVSUyArPSBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4
dE1lbnVJdGVtLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Nv
bnRleHRNZW51SXRlbVR5cGVzLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0RpY3Rpb25hcnkuaCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLRXJyb3IuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
R2VvbWV0cnkuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLR3Jh
cGhpY3NDb250ZXh0LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9X
S0ltYWdlLmggXApAQCAtMTI1LDYgKzEyOCw4IEBAIFdFQktJVDJfQVBJX0hFQURFUlMgKz0gXAog
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZV9w
LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
dmlldy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3Vj
aHdlYnZpZXdfcC5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJlcnJvci5oIFwKKyAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F3ZWJlcnJvcl9wLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXdlYmtpdHR5cGVzLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRs
ZUJhY2tGb3J3YXJkTGlzdEl0ZW0uaCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100493</attachid>
            <date>2011-07-12 08:57:07 -0700</date>
            <delta_ts>2011-07-12 13:05:27 -0700</delta_ts>
            <desc>Proposed patch v3</desc>
            <filename>bug-64362-v3.diff</filename>
            <type>text/plain</type>
            <size>23066</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkN2M3NGRkLi5kYmZiMzIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQg
QEAKKzIwMTEtMDctMTIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIFtRdF1bV0syXSBBZGQgaW5mb3JtYXRpdmUgbG9hZEZhaWxlZCgpIHNpZ25hbCB0byB3ZWIg
dmlld3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NDM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSB3ZWIgdmlld3Mgd2lsbCBub3cgZW1pdCBsb2FkRmFpbGVkKFFXZWJFcnJvcikgd2hlbiBhIGxv
YWQgZmFpbHVyZSBvY2N1cnMuCisKKyAgICAgICAgVGhlIFFXZWJFcnJvciBvYmplY3QgY3VycmVu
dGx5IGNvbnRhaW5zOgorICAgICAgICAtIFR5cGUgb2YgZmFpbHVyZSAod2hldGhlciBpdCdzIGFu
IGVuZ2luZSwgbmV0d29yayBvciBwcm90b2NvbCBlcnJvci4pCisgICAgICAgIC0gVGhlIGZhaWxp
bmcgVVJMLgorICAgICAgICAtIEFueSBlcnJvciBjb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmFp
bHVyZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcDoK
KyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRGYWlsKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnBhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5j
cHA6IEFkZGVkLgorICAgICAgICAoUVdlYkVycm9yOjpRV2ViRXJyb3IpOgorICAgICAgICAoUVdl
YkVycm9yUHJpdmF0ZTo6Y3JlYXRlUVdlYkVycm9yKToKKyAgICAgICAgKFFXZWJFcnJvclByaXZh
dGU6OlFXZWJFcnJvclByaXZhdGUpOgorICAgICAgICAoUVdlYkVycm9yUHJpdmF0ZTo6flFXZWJF
cnJvclByaXZhdGUpOgorICAgICAgICAoUVdlYkVycm9yOjp0eXBlKToKKyAgICAgICAgKFFXZWJF
cnJvcjo6ZXJyb3JDb2RlKToKKyAgICAgICAgKFFXZWJFcnJvcjo6dXJsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F3ZWJlcnJvcl9wLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
dGVzdHMvY29tbW9udmlld3Rlc3RzL3RzdF9jb21tb252aWV3dGVzdHMuY3BwOgorICAgICAgICAo
dHN0X0NvbW1vblZpZXdUZXN0czo6bG9hZE5vbmV4aXN0ZW50RmlsZVVybCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6V2ViVmlld0Fic3RyYWN0aW9uKToK
KyAgICAgICAgKFdlYlZpZXdBYnN0cmFjdGlvbjo6dG91Y2hWaWV3TG9hZEZhaWxlZCk6CisgICAg
ICAgIChXZWJWaWV3QWJzdHJhY3Rpb246OmRlc2t0b3BWaWV3TG9hZEZhaWxlZCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwOgorICAgICAgICAo
ZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKToKKyAgICAgICAgKGRpc3BhdGNoTG9hZEZhaWxlZCk6Cisg
ICAgICAgIChxdF93a19kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgor
ICAgICAgICAocXRfd2tfZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKHF0X3drX2Rp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChRdFdlYlBhZ2VQcm94eTo6bG9hZERpZEZhaWwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZp
ZXdJbnRlcmZhY2U6OmxvYWREaWRGYWlsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hW
aWV3SW50ZXJmYWNlLmg6CisgICAgICAgICogVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaDoK
KyAgICAgICAgKiBXZWJLaXQyQVBJLnByaToKKwogMjAxMS0wNy0xMSAgQW5kcmVhcyBLbGluZyAg
PGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIE1vdmUgem9vbWFibGUtYXJl
YS1mb3ItcG9pbnQgZnVuY3Rpb25hbGl0eSB0byBRVG91Y2hXZWJQYWdlUHJveHkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAppbmRl
eCA3ODEzZWQ2Li5mNmI1MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCkBAIC0xMTIsNiArMTEyLDExIEBAIHZvaWQgUURl
c2t0b3BXZWJWaWV3UHJpdmF0ZTo6bG9hZERpZFN1Y2NlZWQoKQogICAgIGVtaXQgcS0+bG9hZFN1
Y2NlZWRlZCgpOwogfQogCit2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmxvYWREaWRGYWls
KGNvbnN0IFFXZWJFcnJvciYgZXJyb3IpCit7CisgICAgZW1pdCBxLT5sb2FkRmFpbGVkKGVycm9y
KTsKK30KKwogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VMb2FkUHJvZ3Jl
c3MoaW50IHBlcmNlbnRhZ2VMb2FkZWQpCiB7CiAgICAgZW1pdCBxLT5sb2FkUHJvZ3Jlc3MocGVy
Y2VudGFnZUxvYWRlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3FkZXNrdG9wd2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXcuaAppbmRleCBmMDlkZDc0Li5hNmUyMGFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlIDxRVXJsPgogCiBjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOwor
Y2xhc3MgUVdlYkVycm9yOwogCiBuYW1lc3BhY2UgV1RSIHsKICAgICBjbGFzcyBXZWJWaWV3OwpA
QCAtNTYsNiArNTcsNyBAQCBRX1NJR05BTFM6CiAgICAgdm9pZCBzdGF0dXNCYXJNZXNzYWdlQ2hh
bmdlZChjb25zdCBRU3RyaW5nJik7CiAgICAgdm9pZCBsb2FkU3RhcnRlZCgpOwogICAgIHZvaWQg
bG9hZFN1Y2NlZWRlZCgpOworICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBRV2ViRXJyb3ImKTsK
ICAgICB2b2lkIGxvYWRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpOwogICAgIHZvaWQgdXJsQ2hhbmdl
ZChjb25zdCBRVXJsJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcWRlc2t0b3B3ZWJ2aWV3X3AuaAppbmRleCBjMWYwMGUzLi44Nzk3ODdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlld19wLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXdfcC5oCkBA
IC01OCw2ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUN1cnNv
cihjb25zdCBRQ3Vyc29yJik7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRCZWdpbigpOwogICAg
IHZpcnR1YWwgdm9pZCBsb2FkRGlkU3VjY2VlZCgpOworICAgIHZpcnR1YWwgdm9pZCBsb2FkRGlk
RmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFBy
b2dyZXNzKGludCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0NvbnRleHRNZW51KFFTaGFyZWRQ
b2ludGVyPFFNZW51Pik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2VicGFnZS5oCmluZGV4IGE4OGVjYzEuLjQyYjNiMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCkBAIC0yOSw2ICsyOSw3IEBACiAK
IGNsYXNzIFFUb3VjaFdlYlBhZ2VQcml2YXRlOwogY2xhc3MgUVRvdWNoV2ViUGFnZVByb3h5Owor
Y2xhc3MgUVdlYkVycm9yOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBjbGFzcyBUb3VjaFZp
ZXdJbnRlcmZhY2U7CkBAIC02Miw2ICs2Myw3IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIHRpdGxl
Q2hhbmdlZChjb25zdCBRU3RyaW5nJik7CiAgICAgdm9pZCBsb2FkU3RhcnRlZCgpOwogICAgIHZv
aWQgbG9hZFN1Y2NlZWRlZCgpOworICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBRV2ViRXJyb3Im
KTsKICAgICB2b2lkIGxvYWRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3ZWJlcnJvci5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhYjI1YQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmNwcApAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFuZHJlYXMgS2xpbmcgPGtsaW5nQHdlYmtp
dC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAicXdlYmVycm9yLmgiCisK
KyNpbmNsdWRlICJxd2ViZXJyb3JfcC5oIgorI2luY2x1ZGUgPFF0Q29yZS9RVXJsPgorI2luY2x1
ZGUgPFdLU2hhcmVkQVBJQ2FzdC5oPgorI2luY2x1ZGUgPFdLU3RyaW5nLmg+CisjaW5jbHVkZSA8
V0tTdHJpbmdRdC5oPgorI2luY2x1ZGUgPFdLVHlwZS5oPgorI2luY2x1ZGUgPFdLVVJMLmg+Cisj
aW5jbHVkZSA8V0tVUkxRdC5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitRV2ViRXJy
b3I6OlFXZWJFcnJvcihRV2ViRXJyb3JQcml2YXRlKiBwcml2KQorICAgIDogZChwcml2KQorewor
fQorCitRV2ViRXJyb3I6OlFXZWJFcnJvcihjb25zdCBRV2ViRXJyb3ImIG90aGVyKQorICAgIDog
ZChvdGhlci5kKQoreworfQorCitRV2ViRXJyb3IgUVdlYkVycm9yUHJpdmF0ZTo6Y3JlYXRlUVdl
YkVycm9yKFdLRXJyb3JSZWYgZXJyb3JSZWYpCit7CisgICAgcmV0dXJuIFFXZWJFcnJvcihuZXcg
UVdlYkVycm9yUHJpdmF0ZShlcnJvclJlZikpOworfQorCitRV2ViRXJyb3JQcml2YXRlOjpRV2Vi
RXJyb3JQcml2YXRlKFdLRXJyb3JSZWYgZXJyb3JSZWYpCisgICAgOiBlcnJvcihlcnJvclJlZikK
K3sKK30KKworUVdlYkVycm9yUHJpdmF0ZTo6flFXZWJFcnJvclByaXZhdGUoKQoreworfQorCitR
V2ViRXJyb3I6OlR5cGUgUVdlYkVycm9yOjp0eXBlKCkgY29uc3QKK3sKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gZXJyb3JEb21haW5QdHIgPSBhZG9wdFdLKFdLRXJyb3JDb3B5RG9tYWlu
KGQtPmVycm9yLmdldCgpKSk7CisgICAgV1RGOjpTdHJpbmcgZXJyb3JEb21haW4gPSB0b1dURlN0
cmluZyhlcnJvckRvbWFpblB0ci5nZXQoKSk7CisKKyAgICBpZiAoZXJyb3JEb21haW4gPT0gIlF0
TmV0d29yayIpCisgICAgICAgIHJldHVybiBRV2ViRXJyb3I6Ok5ldHdvcmtFcnJvcjsKKyAgICBp
ZiAoZXJyb3JEb21haW4gPT0gIkhUVFAiKQorICAgICAgICByZXR1cm4gUVdlYkVycm9yOjpIdHRw
RXJyb3I7CisgICAgLy8gRklYTUU6IFJlZGlyZWN0aW9uIG92ZXJmbG93IGN1cnJlbnRseSBwdXRz
IHRoZSBVUkwgaG9zdG5hbWUgaW4gdGhlIGVycm9yRG9tYWluIGZpZWxkLgorICAgIC8vICAgICAg
ICBXZSBzaG91bGQgZXhwb3NlIHRoYXQgZXJyb3Igc29tZWhvdy4gU291cmNlIGlzIFFOZXR3b3Jr
UmVwbHlIYW5kbGVyOjpyZWRpcmVjdCgpLgorICAgIHJldHVybiBRV2ViRXJyb3I6OkVuZ2luZUVy
cm9yOworfQorCitpbnQgUVdlYkVycm9yOjplcnJvckNvZGUoKSBjb25zdAoreworICAgIHJldHVy
biBXS0Vycm9yR2V0RXJyb3JDb2RlKGQtPmVycm9yLmdldCgpKTsKK30KKworUVVybCBRV2ViRXJy
b3I6OnVybCgpIGNvbnN0Cit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IGZhaWxpbmdVUkwg
PSBhZG9wdFdLKFdLRXJyb3JDb3B5RmFpbGluZ1VSTChkLT5lcnJvci5nZXQoKSkpOworICAgIHJl
dHVybiBXS1VSTENvcHlRVXJsKGZhaWxpbmdVUkwuZ2V0KCkpOworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdlYmVycm9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMmVlMTZmNgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcXdlYmVycm9yLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBbmRyZWFzIEtsaW5nIDxrbGluZ0B3ZWJraXQub3JnPgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBx
d2ViZXJyb3JfaAorI2RlZmluZSBxd2ViZXJyb3JfaAorCisjaW5jbHVkZSAicXdlYmtpdGdsb2Jh
bC5oIgorI2luY2x1ZGUgPFFTaGFyZWREYXRhUG9pbnRlcj4KKyNpbmNsdWRlIDxRdE5ldHdvcmsv
UU5ldHdvcmtSZXBseT4KKworY2xhc3MgUVdlYkVycm9yUHJpdmF0ZTsKKworUVRfQkVHSU5fTkFN
RVNQQUNFCitjbGFzcyBRVXJsOworUVRfRU5EX05BTUVTUEFDRQorCitjbGFzcyBRV0VCS0lUX0VY
UE9SVCBRV2ViRXJyb3IgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIEVuZ2lu
ZUVycm9yLAorICAgICAgICBOZXR3b3JrRXJyb3IsCisgICAgICAgIEh0dHBFcnJvciwKKyAgICB9
OworCisgICAgVHlwZSB0eXBlKCkgY29uc3Q7CisgICAgUVVybCB1cmwoKSBjb25zdDsKKyAgICBp
bnQgZXJyb3JDb2RlKCkgY29uc3Q7CisKKyAgICBpbnQgZXJyb3JDb2RlQXNIdHRwU3RhdHVzQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIGVycm9yQ29kZSgpOyB9CisgICAgUU5ldHdvcmtSZXBseTo6TmV0
d29ya0Vycm9yIGVycm9yQ29kZUFzTmV0d29ya0Vycm9yKCkgY29uc3QgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8UU5ldHdvcmtSZXBseTo6TmV0d29ya0Vycm9yPihlcnJvckNvZGUoKSk7IH0KKworICAg
IFFXZWJFcnJvcihjb25zdCBRV2ViRXJyb3ImKTsKKworcHJpdmF0ZToKKyAgICBRV2ViRXJyb3Io
UVdlYkVycm9yUHJpdmF0ZSopOworCisgICAgUVNoYXJlZERhdGFQb2ludGVyPFFXZWJFcnJvclBy
aXZhdGU+IGQ7CisgICAgZnJpZW5kIGNsYXNzIFFXZWJFcnJvclByaXZhdGU7Cit9OworCisjZW5k
aWYgLyogcXdlYmVycm9yX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXdlYmVycm9yX3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXdlYmVycm9yX3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWI4OGYy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
ZXJyb3JfcC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQW5k
cmVhcyBLbGluZyA8a2xpbmdAd2Via2l0Lm9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgcXdlYmVycm9yX3BfaAor
I2RlZmluZSBxd2ViZXJyb3JfcF9oCisKKyNpbmNsdWRlICJxd2ViZXJyb3IuaCIKKyNpbmNsdWRl
IDxRdENvcmUvUVNoYXJlZERhdGE+CisjaW5jbHVkZSA8V0tFcnJvci5oPgorI2luY2x1ZGUgPFdL
UmV0YWluUHRyLmg+CisKK2NsYXNzIFFXZWJFcnJvclByaXZhdGUgOiBwdWJsaWMgUVNoYXJlZERh
dGEgeworcHVibGljOgorICAgIHN0YXRpYyBRV2ViRXJyb3IgY3JlYXRlUVdlYkVycm9yKFdLRXJy
b3JSZWYpOworICAgIFFXZWJFcnJvclByaXZhdGUoV0tFcnJvclJlZik7CisgICAgflFXZWJFcnJv
clByaXZhdGUoKTsKKworICAgIFdLUmV0YWluUHRyPFdLRXJyb3JSZWY+IGVycm9yOworfTsKKwor
I2VuZGlmIC8qIHF3ZWJlcnJvcl9wX2ggKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3RzdF9jb21tb252aWV3dGVzdHMu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVz
dHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHAKaW5kZXggYmJkNjcwNS4uMmFlODY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVz
dHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvdHN0X2NvbW1vbnZpZXd0ZXN0cy5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAgcHJpdmF0ZSBzbG90czoKICAgICB2b2lkIGxvYWRFbXB0eVVybCgpOwog
ICAgIHZvaWQgbG9hZEVtcHR5UGFnZVZpZXdWaXNpYmxlKCk7CiAgICAgdm9pZCBsb2FkRW1wdHlQ
YWdlVmlld0hpZGRlbigpOworICAgIHZvaWQgbG9hZE5vbmV4aXN0ZW50RmlsZVVybCgpOwogICAg
IHZvaWQgYmFja0FuZEZvcndhcmQoKTsKICAgICB2b2lkIHJlbG9hZCgpOwogICAgIHZvaWQgc3Rv
cCgpOwpAQCAtODIsNiArODMsMTYgQEAgdm9pZCB0c3RfQ29tbW9uVmlld1Rlc3RzOjpsb2FkRW1w
dHlQYWdlVmlld0hpZGRlbigpCiAgICAgUUNPTVBBUkUobG9hZFN0YXJ0ZWRTcHkuc2l6ZSgpLCAx
KTsKIH0KIAordm9pZCB0c3RfQ29tbW9uVmlld1Rlc3RzOjpsb2FkTm9uZXhpc3RlbnRGaWxlVXJs
KCkKK3sKKyAgICBRU2lnbmFsU3B5IGxvYWRGYWlsZWRTcHkodmlld0Fic3RyYWN0aW9uLmRhdGEo
KSwgU0lHTkFMKGxvYWRTdGFydGVkKCkpKTsKKworICAgIHZpZXdBYnN0cmFjdGlvbi0+bG9hZChR
VXJsOjpmcm9tTG9jYWxGaWxlKFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNFX0RJUiAiL2h0bWwv
a2VubmV0aF9mYW5jbHViX21lbWJlcnMuaHRtbCIpKSk7CisgICAgUVZFUklGWSh3YWl0Rm9yU2ln
bmFsKHZpZXdBYnN0cmFjdGlvbi5kYXRhKCksIFNJR05BTChsb2FkRmFpbGVkKFFXZWJFcnJvcikp
KSk7CisKKyAgICBRQ09NUEFSRShsb2FkRmFpbGVkU3B5LnNpemUoKSwgMSk7Cit9CisKIHZvaWQg
dHN0X0NvbW1vblZpZXdUZXN0czo6YmFja0FuZEZvcndhcmQoKQogewogICAgIHZpZXdBYnN0cmFj
dGlvbi0+bG9hZChRVXJsOjpmcm9tTG9jYWxGaWxlKFFMYXRpbjFTdHJpbmcoVEVTVFNfU09VUkNF
X0RJUiAiL2h0bWwvYmFzaWNfcGFnZS5odG1sIikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmlld3Rlc3RzL3dlYnZpZXdhYnN0cmFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZp
ZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uY3BwCmluZGV4IDNkYWU3YTIuLmViMDNkZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMvY29tbW9udmll
d3Rlc3RzL3dlYnZpZXdhYnN0cmFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmNwcApA
QCAtMzQsMTIgKzM0LDE0IEBAIFdlYlZpZXdBYnN0cmFjdGlvbjo6V2ViVmlld0Fic3RyYWN0aW9u
KCkKICAgICBtX3RvdWNoV2ViVmlld1dpbmRvdy5zZXRXaW5kb3dUaXRsZShRTGF0aW4xU3RyaW5n
KCJUb3VjaFdlYlZpZXciKSk7CiAgICAgY29ubmVjdCh0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLCBT
SUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNMT1QodG91Y2hWaWV3TG9hZFN0YXJ0ZWQoKSkp
OwogICAgIGNvbm5lY3QodG91Y2hXZWJWaWV3KCktPnBhZ2UoKSwgU0lHTkFMKGxvYWRTdWNjZWVk
ZWQoKSksIHRoaXMsIFNMT1QodG91Y2hWaWV3TG9hZFN1Y2NlZWRlZCgpKSk7CisgICAgY29ubmVj
dCh0b3VjaFdlYlZpZXcoKS0+cGFnZSgpLCBTSUdOQUwobG9hZEZhaWxlZChRV2ViRXJyb3IpKSwg
dGhpcywgU0xPVCh0b3VjaFZpZXdMb2FkRmFpbGVkKFFXZWJFcnJvcikpKTsKIAogICAgIHNjcmVl
bkhhbGYubW92ZUxlZnQoc2NyZWVuSGFsZi5yaWdodCgpKTsKICAgICBtX2Rlc2t0b3BXZWJWaWV3
V2luZG93LnNldEdlb21ldHJ5KHNjcmVlbkhhbGYpOwogICAgIG1fZGVza3RvcFdlYlZpZXdXaW5k
b3cuc2V0V2luZG93VGl0bGUoUUxhdGluMVN0cmluZygiRGVza3RvcFdlYlZpZXciKSk7CiAgICAg
Y29ubmVjdChkZXNrdG9wV2ViVmlldygpLCBTSUdOQUwobG9hZFN0YXJ0ZWQoKSksIHRoaXMsIFNM
T1QoZGVza3RvcFZpZXdMb2FkU3RhcnRlZCgpKSk7CiAgICAgY29ubmVjdChkZXNrdG9wV2ViVmll
dygpLCBTSUdOQUwobG9hZFN1Y2NlZWRlZCgpKSwgdGhpcywgU0xPVChkZXNrdG9wVmlld0xvYWRT
dWNjZWVkZWQoKSkpOworICAgIGNvbm5lY3QoZGVza3RvcFdlYlZpZXcoKSwgU0lHTkFMKGxvYWRG
YWlsZWQoUVdlYkVycm9yKSksIHRoaXMsIFNMT1QoZGVza3RvcFZpZXdMb2FkRmFpbGVkKFFXZWJF
cnJvcikpKTsKIH0KIAogdm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OnNob3coKQpAQCAtMTEzLDYg
KzExNSwyMCBAQCB2b2lkIFdlYlZpZXdBYnN0cmFjdGlvbjo6ZGVza3RvcFZpZXdMb2FkU3VjY2Vl
ZGVkKCkKICAgICAgICAgZW1pdCBsb2FkU3VjY2VlZGVkKCk7CiB9CiAKK3ZvaWQgV2ViVmlld0Fi
c3RyYWN0aW9uOjp0b3VjaFZpZXdMb2FkRmFpbGVkKGNvbnN0IFFXZWJFcnJvciYgZXJyb3IpCit7
CisgICAgbV90b3VjaFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxlZChRV2ViRXJy
b3IpKV0rKzsKKyAgICBpZiAobV90b3VjaFZpZXdTaWduYWxzQ291bnRlcltTSUdOQUwobG9hZEZh
aWxlZChRV2ViRXJyb3IpKV0gPT0gbV9kZXNrdG9wVmlld1NpZ25hbHNDb3VudGVyW1NJR05BTChs
b2FkRmFpbGVkKFFXZWJFcnJvcikpXSkKKyAgICAgICAgZW1pdCBsb2FkRmFpbGVkKGVycm9yKTsK
K30KKwordm9pZCBXZWJWaWV3QWJzdHJhY3Rpb246OmRlc2t0b3BWaWV3TG9hZEZhaWxlZChjb25z
dCBRV2ViRXJyb3ImIGVycm9yKQoreworICAgIG1fZGVza3RvcFZpZXdTaWduYWxzQ291bnRlcltT
SUdOQUwobG9hZEZhaWxlZChRV2ViRXJyb3IpKV0rKzsKKyAgICBpZiAobV90b3VjaFZpZXdTaWdu
YWxzQ291bnRlcltTSUdOQUwobG9hZEZhaWxlZChRV2ViRXJyb3IpKV0gPT0gbV9kZXNrdG9wVmll
d1NpZ25hbHNDb3VudGVyW1NJR05BTChsb2FkRmFpbGVkKFFXZWJFcnJvcikpXSkKKyAgICAgICAg
ZW1pdCBsb2FkRmFpbGVkKGVycm9yKTsKK30KKwogUVRvdWNoV2ViVmlldyogV2ViVmlld0Fic3Ry
YWN0aW9uOjp0b3VjaFdlYlZpZXcoKSBjb25zdAogewogICAgIHJldHVybiBzdGF0aWNfY2FzdDxR
VG91Y2hXZWJWaWV3Kj4obV90b3VjaFdlYlZpZXdXaW5kb3cud2ViVmlldy5kYXRhKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy9jb21tb252aWV3
dGVzdHMvd2Vidmlld2Fic3RyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaAppbmRleCBiODgx
NjQ4Li5kMTJhZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJzdHJhY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL2NvbW1vbnZpZXd0ZXN0cy93ZWJ2aWV3YWJz
dHJhY3Rpb24uaApAQCAtNDUsMTIgKzQ1LDE1IEBAIHB1YmxpYzoKIFFfU0lHTkFMUzoKICAgICB2
b2lkIGxvYWRTdGFydGVkKCk7CiAgICAgdm9pZCBsb2FkU3VjY2VlZGVkKCk7CisgICAgdm9pZCBs
b2FkRmFpbGVkKGNvbnN0IFFXZWJFcnJvciYpOwogCiBwcml2YXRlIFFfU0xPVFM6CiAgICAgdm9p
ZCB0b3VjaFZpZXdMb2FkU3RhcnRlZCgpOwogICAgIHZvaWQgZGVza3RvcFZpZXdMb2FkU3RhcnRl
ZCgpOwogICAgIHZvaWQgdG91Y2hWaWV3TG9hZFN1Y2NlZWRlZCgpOwogICAgIHZvaWQgZGVza3Rv
cFZpZXdMb2FkU3VjY2VlZGVkKCk7CisgICAgdm9pZCB0b3VjaFZpZXdMb2FkRmFpbGVkKGNvbnN0
IFFXZWJFcnJvciYpOworICAgIHZvaWQgZGVza3RvcFZpZXdMb2FkRmFpbGVkKGNvbnN0IFFXZWJF
cnJvciYpOwogCiBwcml2YXRlOgogICAgIFFUb3VjaFdlYlZpZXcqIHRvdWNoV2ViVmlldygpIGNv
bnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0NsaWVudEltcGwuY3BwCmluZGV4IDdm
ZGZlNmYuLmVmYTIyZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9D
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvQ2xpZW50SW1w
bC5jcHAKQEAgLTI0LDYgKzI0LDggQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRl
ICJXS1N0cmluZ1F0LmgiCiAjaW5jbHVkZSAiV0tVUkxRdC5oIgorI2luY2x1ZGUgInF3ZWJlcnJv
ci5oIgorI2luY2x1ZGUgInF3ZWJlcnJvcl9wLmgiCiAjaW5jbHVkZSA8cXdrY29udGV4dC5oPgog
I2luY2x1ZGUgPFF0V2ViUGFnZVByb3h5Lmg+CiAjaW5jbHVkZSA8V0tGcmFtZS5oPgpAQCAtNDUs
MTYgKzQ3LDIyIEBAIHN0YXRpYyBRdFdlYlBhZ2VQcm94eSogdG9RdFdlYlBhZ2VQcm94eShjb25z
dCB2b2lkKiBjbGllbnRJbmZvKQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBsb2Fk
RmluaXNoZWQoV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbywgYm9vbCBv
aykKK3N0YXRpYyB2b2lkIGRpc3BhdGNoTG9hZFN1Y2NlZWRlZChXS0ZyYW1lUmVmIGZyYW1lLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIGlmICghV0tGcmFtZUlzTWFpbkZyYW1lKGZy
YW1lKSkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChvaykKLSAgICAgICAgdG9RdFdlYlBhZ2VQ
cm94eShjbGllbnRJbmZvKS0+bG9hZERpZFN1Y2NlZWQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAg
Ly8gRklYTUU6IGxvYWREaWRGYWlsKCkuCi0gICAgfQorCisgICAgdG9RdFdlYlBhZ2VQcm94eShj
bGllbnRJbmZvKS0+dXBkYXRlTmF2aWdhdGlvbkFjdGlvbnMoKTsKKyAgICB0b1F0V2ViUGFnZVBy
b3h5KGNsaWVudEluZm8pLT5sb2FkRGlkU3VjY2VlZCgpOworfQorCitzdGF0aWMgdm9pZCBkaXNw
YXRjaExvYWRGYWlsZWQoV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbywg
V0tFcnJvclJlZiBlcnJvcikKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkp
CisgICAgICAgIHJldHVybjsKKwogICAgIHRvUXRXZWJQYWdlUHJveHkoY2xpZW50SW5mbyktPnVw
ZGF0ZU5hdmlnYXRpb25BY3Rpb25zKCk7CisgICAgdG9RdFdlYlBhZ2VQcm94eShjbGllbnRJbmZv
KS0+bG9hZERpZEZhaWwoUVdlYkVycm9yUHJpdmF0ZTo6Y3JlYXRlUVdlYkVycm9yKGVycm9yKSk7
CiB9CiAKIHZvaWQgcXRfd2tfZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VS
ZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQpAQCAtNzEsNyArNzksNyBAQCB2b2lkIHF0X3drX2RpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXSwog
CiB2b2lkIHF0X3drX2RpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1Bh
Z2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tFcnJvclJlZiBlcnJvciwgV0tUeXBlUmVm
IHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewotICAgIGxvYWRGaW5pc2hlZChm
cmFtZSwgY2xpZW50SW5mbywgZmFsc2UpOworICAgIGRpc3BhdGNoTG9hZEZhaWxlZChmcmFtZSwg
Y2xpZW50SW5mbywgZXJyb3IpOwogfQogCiB2b2lkIHF0X3drX2RpZENvbW1pdExvYWRGb3JGcmFt
ZShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQpAQCAtOTIsMTIgKzEwMCwxMiBAQCB2b2lkIHF0X3drX2Rp
ZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZy
YW1lLCBXS1R5cAogCiB2b2lkIHF0X3drX2RpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYg
cGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQogewotICAgIGxvYWRGaW5pc2hlZChmcmFtZSwgY2xpZW50SW5mbywgdHJ1ZSk7
CisgICAgZGlzcGF0Y2hMb2FkU3VjY2VlZGVkKGZyYW1lLCBjbGllbnRJbmZvKTsKIH0KIAogdm9p
ZCBxdF93a19kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdLUGFnZVJlZiBwYWdlLCBXS0Zy
YW1lUmVmIGZyYW1lLCBXS0Vycm9yUmVmIGVycm9yLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCiB7Ci0gICAgbG9hZEZpbmlzaGVkKGZyYW1lLCBjbGllbnRJbmZv
LCBmYWxzZSk7CisgICAgZGlzcGF0Y2hMb2FkRmFpbGVkKGZyYW1lLCBjbGllbnRJbmZvLCBlcnJv
cik7CiB9CiAKIHZvaWQgcXRfd2tfZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmIHBh
Z2UsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXNlckRh
dGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViUGFnZVByb3h5LmNwcAppbmRleCBmNTA3YjAxLi4xMzYyMWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKQEAgLTQ1NSw2ICs0
NTUsMTEgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6bG9hZERpZFN1Y2NlZWQoKQogICAgIG1fdmll
d0ludGVyZmFjZS0+bG9hZERpZFN1Y2NlZWQoKTsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6
bG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJiBlcnJvcikKK3sKKyAgICBtX3ZpZXdJbnRlcmZh
Y2UtPmxvYWREaWRGYWlsKGVycm9yKTsKK30KKwogdm9pZCBRdFdlYlBhZ2VQcm94eTo6ZGlkQ2hh
bmdlTG9hZFByb2dyZXNzKGludCBuZXdMb2FkUHJvZ3Jlc3MpCiB7CiAgICAgbV92aWV3SW50ZXJm
YWNlLT5kaWRDaGFuZ2VMb2FkUHJvZ3Jlc3MobmV3TG9hZFByb2dyZXNzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKaW5kZXggNTc1ZmQyYy4uYmYzMjhh
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJWaWV3cG9ydEFyZ3VtZW50cy5oIgogI2luY2x1ZGUg
IlZpZXdJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKyNpbmNsdWRlIDxX
S0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPFFCYXNpY1RpbWVy
PgogI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CkBAIC0xNDgsNiArMTQ5LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBsb2FkRGlkQmVnaW4oKTsKICAgICB2b2lkIGxvYWREaWRTdWNjZWVkKCk7Cisg
ICAgdm9pZCBsb2FkRGlkRmFpbChjb25zdCBRV2ViRXJyb3ImKTsKICAgICB2b2lkIGRpZENoYW5n
ZUxvYWRQcm9ncmVzcyhpbnQpOwogCiAgICAgdm9pZCBwYWludChRUGFpbnRlciogcGFpbnRlciwg
UVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmll
d0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50
ZXJmYWNlLmNwcAppbmRleCAzZTEzYTlmLi44OGViMTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcApAQCAtMTI4LDYgKzEyOCwx
MSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6bG9hZERpZFN1Y2NlZWQoKQogICAgIGVtaXQg
bV9wYWdlVmlldy0+bG9hZFN1Y2NlZWRlZCgpOwogfQogCit2b2lkIFRvdWNoVmlld0ludGVyZmFj
ZTo6bG9hZERpZEZhaWwoY29uc3QgUVdlYkVycm9yJiBlcnJvcikKK3sKKyAgICBlbWl0IG1fcGFn
ZVZpZXctPmxvYWRGYWlsZWQoZXJyb3IpOworfQorCiB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6
ZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCBwZXJjZW50YWdlTG9hZGVkKQogewogICAgIGVtaXQg
bV9wYWdlVmlldy0+bG9hZFByb2dyZXNzKHBlcmNlbnRhZ2VMb2FkZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1RvdWNoVmlld0ludGVyZmFjZS5oCmluZGV4IGY1NjhkZjku
LmY5YmYzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZp
ZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3
SW50ZXJmYWNlLmgKQEAgLTU5LDYgKzU5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERp
ZEJlZ2luKCk7CiAgICAgdmlydHVhbCB2b2lkIGxvYWREaWRTdWNjZWVkKCk7CisgICAgdmlydHVh
bCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBk
aWRDaGFuZ2VMb2FkUHJvZ3Jlc3MoaW50KTsKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93Q29udGV4
dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvVmlld0ludGVyZmFjZS5oCmluZGV4IDBmZDg5ZjcuLjgzYzA3MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaApAQCAtMjUsNiArMjUsOCBAQAogI2lu
Y2x1ZGUgPFF0Q29yZS9RU2l6ZT4KICNpbmNsdWRlIDxRdEd1aS9RTWVudT4KIAorY2xhc3MgUVdl
YkVycm9yOworCiBRVF9CRUdJTl9OQU1FU1BBQ0UKIGNsYXNzIFFDdXJzb3I7CiBjbGFzcyBRR3Jh
cGhpY3NXaWRnZXQ7CkBAIC01OSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGxv
YWREaWRCZWdpbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbG9hZERpZFN1Y2NlZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGxvYWREaWRGYWlsKGNvbnN0IFFXZWJFcnJvciYpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlTG9hZFByb2dyZXNzKGludCkgPSAwOwogCiAgICAgdmly
dHVhbCB2b2lkIHNob3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVudT4pID0gMDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDJBUEkucHJpIGIvU291cmNlL1dlYktpdDIv
V2ViS2l0MkFQSS5wcmkKaW5kZXggZWNhMjBmMi4uZDcwYWM2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViS2l0MkFQSS5wcmkKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0MkFQSS5w
cmkKQEAgLTYsNiArNiw3IEBAIFdFQktJVDJfQVBJX1NPVVJDRVMgPSBcCiAgICAgJCRTT1VSQ0Vf
RElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJbmZvLmNwcCBcCiAgICAgJCRT
T1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcCBcCiAg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAgXAor
ICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yLmNwcCBcCiAgICAg
JCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLR3JhcGhpY3NDb250ZXh0LmNwcCBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwIFwKICAg
ICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5j
cHAgXApAQCAtNDcsNiArNDgsNyBAQCBXRUJLSVQyX0FQSV9TT1VSQ0VTID0gXAogICAgICQkU09V
UkNFX0RJUi9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcCBcCiAg
ICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNw
cCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2
aWV3LmNwcCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2Vi
ZXJyb3IuY3BwIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlLmNwcCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUJhY2tGb3J3YXJkTGlzdC5jcHAg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmNwcCBcCkBAIC02OSw2ICs3MSw3IEBAIFdF
QktJVDJfQVBJX0hFQURFUlMgKz0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJlZC9B
UEkvYy9XS0NvbnRleHRNZW51SXRlbS5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9TaGFy
ZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmggXAorICAgICQkU09VUkNFX0RJUi9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9XS0Vycm9yLmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1No
YXJlZC9BUEkvYy9XS0dlb21ldHJ5LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0dyYXBoaWNzQ29udGV4dC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9T
aGFyZWQvQVBJL2MvV0tJbWFnZS5oIFwKQEAgLTEyNSw2ICsxMjgsOCBAQCBXRUJLSVQyX0FQSV9I
RUFERVJTICs9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2VfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXcuaCBcCiAgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xdG91Y2h3ZWJ2aWV3X3AuaCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViZXJyb3IuaCBcCisgICAgJCRTT1VSQ0VfRElSL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xd2ViZXJyb3JfcC5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F3ZWJraXR0eXBlcy5oIFwKICAgICAkJFNPVVJDRV9ESVIvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlQmFja0ZvcndhcmRMaXN0
LmggXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL2MvV0tCdW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtLmggXAo=
</data>
<flag name="review"
          id="95163"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>