<?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>45222</bug_id>
          
          <creation_ts>2010-09-03 18:37:01 -0700</creation_ts>
          <short_desc>Add ability to send UserData to willSubmitForm</short_desc>
          <delta_ts>2010-10-28 13:17:59 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>274321</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-03 18:37:01 -0700</bug_when>
    <thetext>Add ability to send UserData to willSubmitForm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274331</commentid>
    <comment_count>1</comment_count>
      <attachid>66581</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-03 19:39:10 -0700</bug_when>
    <thetext>Created attachment 66581
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274332</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-03 19:45:15 -0700</bug_when>
    <thetext>Attachment 66581 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePage.h:150:  Extra space between WKBundlePageWillSubmitFormCallback and willSubmitForm  [whitespace/declaration] [3]
WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 3 in 12 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>274334</commentid>
    <comment_count>3</comment_count>
      <attachid>66581</attachid>
    <who name="">mitz</who>
    <bug_when>2010-09-03 19:48:02 -0700</bug_when>
    <thetext>Comment on attachment 66581
Patch

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

&gt; WebKit2/UIProcess/WebPageProxy.h:205
&gt; +    void willSubmitForm(WebFrameProxy* frame, WebFrameProxy* frameSource, Vector&lt;std::pair&lt;WTF::String, WTF::String&gt; &gt;&amp; textFieldValues, APIObject*, uint64_t listenerID);
I think it would be helpful to name the argument here.

&gt; WebKit2/WebProcess/InjectedBundle/InjectedBundlePageFormClient.h:45
&gt; +class APIObject;
&gt;  class WebFrame;
&gt;  class WebPage;
&gt; +class ImmutableDictionary;
Please sort.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274335</commentid>
    <comment_count>4</comment_count>
      <attachid>66581</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-09-03 19:49:06 -0700</bug_when>
    <thetext>Comment on attachment 66581
Patch

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

Mostly just curious what this code looked like.  Very pretty.  Some (trivial) comments below.

&gt; WebKit2/UIProcess/WebPageProxy.cpp:581
&gt; -            willSubmitForm(process()-&gt;webFrame(frameID), process()-&gt;webFrame(sourceFrameID), textFieldValues, listenerID);
&gt; +            willSubmitForm(process()-&gt;webFrame(frameID), process()-&gt;webFrame(sourceFrameID), textFieldValues, 0/*userData*/, listenerID);
Slightly more beautiful would be a noUserData constant that was just a null pointer.

&gt; WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:513
&gt; +    RefPtr&lt;FormState&gt; formState = prpFormState;
I&apos;ve never really like this pattern, but I don&apos;t see a way around it.

&gt; WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:520
&gt; +    RefPtr&lt;APIObject&gt; userData;
&gt; +    webPage-&gt;injectedBundleFormClient().willSubmitForm(webPage, form, m_frame, sourceFrame, values, userData);
I&apos;m confused.  Don&apos;t we need to actually allocate a userData object here?  Does willSubmitForm take a RefPtr by reference as an out param?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274339</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-03 19:58:16 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 66581 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=66581&amp;action=prettypatch
&gt; 
&gt; Mostly just curious what this code looked like.  Very pretty.  Some (trivial) comments below.
&gt; 
&gt; &gt; WebKit2/UIProcess/WebPageProxy.cpp:581
&gt; &gt; -            willSubmitForm(process()-&gt;webFrame(frameID), process()-&gt;webFrame(sourceFrameID), textFieldValues, listenerID);
&gt; &gt; +            willSubmitForm(process()-&gt;webFrame(frameID), process()-&gt;webFrame(sourceFrameID), textFieldValues, 0/*userData*/, listenerID);
&gt; Slightly more beautiful would be a noUserData constant that was just a null pointer.

Ok.

&gt; 
&gt; &gt; WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:520
&gt; &gt; +    RefPtr&lt;APIObject&gt; userData;
&gt; &gt; +    webPage-&gt;injectedBundleFormClient().willSubmitForm(webPage, form, m_frame, sourceFrame, values, userData);
&gt; I&apos;m confused.  Don&apos;t we need to actually allocate a userData object here?  Does willSubmitForm take a RefPtr by reference as an out param?

Yes it does and very intentionally.

Thanks for the review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>293612</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-13 12:27:14 -0700</bug_when>
    <thetext>Attachment 66581 was posted by a committer and has review+, assigning to Sam Weinig for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>301269</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-10-28 13:17:59 -0700</bug_when>
    <thetext>Fixed in http://trac.webkit.org/changeset/66789.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>66581</attachid>
            <date>2010-09-03 19:39:10 -0700</date>
            <delta_ts>2010-09-03 19:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>20373</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2Njc4NSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDQgQEAKKzIwMTAtMDktMDMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYWJp
bGl0eSB0byBzZW5kIFVzZXJEYXRhIHRvIHdpbGxTdWJtaXRGb3JtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NTIyMgorCisgICAgICAgIC0gQWRkcyBh
IHdpbGxTdWJtaXRGb3JtIGNhbGxiYWNrIHRvIHRoZSBCdW5kbGVQYWdlRm9ybUNsaWVudCB3aXRo
IGFuIG91dAorICAgICAgICAgIHBhcmFtZXRlciBXS1R5cGVSZWYqIHBhcmFtZXRlci4KKyAgICAg
ICAgLSBUaGF0IG91dCBwYXJhbWV0ZXIgZ2V0cyBzZXJpYWxpemVkIGFuZCB0aGVuIHBhc3NlZCB0
byB0aGUgUGFnZUZvcm1DbGllbnQncworICAgICAgICAgIHdpbGxTdWJtaXRGb3JtLCB3aGljaCBu
b3cgaGFzIFdLVHlwZVJlZiBwYXJhbWV0ZXIuCisKKyAgICAgICAgLSBUZW1wb3JhcmlseSBhZGRz
IGEgbmV3IFdpbGxTdWJtaXRGb3JtV2l0aFVzZXJEYXRhIG1lc3NhZ2Uga2luZC4gVGhpcyB3aWxs
CisgICAgICAgICAgYmUgcmVwbGFjZWQgYnkgdGhlIGFiaWxpdHkgdG8gZXhwbGljaXRseSBzZXJp
YWxpemUgbnVsbCBhcyBhIFVzZXJNZXNzYWdlLgorCisgICAgICAgICogUGxhdGZvcm0vQ29yZUlQ
Qy9Bcmd1bWVudHMuaDoKKyAgICAgICAgKENvcmVJUEM6OkFyZ3VtZW50czY6OkFyZ3VtZW50czYp
OgorICAgICAgICAoQ29yZUlQQzo6QXJndW1lbnRzNjo6ZW5jb2RlKToKKyAgICAgICAgKENvcmVJ
UEM6OkFyZ3VtZW50czY6OmRlY29kZSk6CisgICAgICAgIChDb3JlSVBDOjpJbik6CisgICAgICAg
IChDb3JlSVBDOjpPdXQpOgorICAgICAgICAqIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9XZWJQYWdl
UHJveHlNZXNzYWdlS2luZHMuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGb3JtQ2xpZW50Ojp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YkZvcm1DbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlTWVzc2FnZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6d2lsbFN1Ym1pdEZvcm0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0FQSS9jL1dLQnVuZGxlUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyk6Cisg
ICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERp
ZEVuZEVkaXRpbmcpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3Rl
ZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSk6CisgICAgICAg
IChXZWJLaXQ6OkluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0pOgorCiAyMDEwLTA5LTAzICBTYW0gV2VpbmlnICA8c2Ft
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCklu
ZGV4OiBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL0FyZ3VtZW50cy5oCShyZXZpc2lvbiA2NjczOCkKKysr
IFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9Bcmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAt
MjI4LDYgKzIyOCw0MiBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIsIHR5cGVu
CiAgICAgcmV0dXJuIEFyZ3VtZW50czU8VDEmLCBUMiYsIFQzJiwgVDQmLCBUNSY+KHQxLCB0Miwg
dDMsIHQ0LCB0NSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMiwgdHlw
ZW5hbWUgVDMsIHR5cGVuYW1lIFQ0LCB0eXBlbmFtZSBUNSwgdHlwZW5hbWUgVDY+IGNsYXNzIEFy
Z3VtZW50czYgOiBBcmd1bWVudHM1PFQxLCBUMiwgVDMsIFQ0LCBUNT4geworcHVibGljOgorICAg
IEFyZ3VtZW50czYoVDEgdDEsIFQyIHQyLCBUMyB0MywgVDQgdDQsIFQ1IHQ1LCBUNiB0NikKKyAg
ICAgICAgOiBBcmd1bWVudHM1PFQxLCBUMiwgVDMsIFQ0LCBUNT4odDEsIHQyLCB0MywgdDQsIHQ1
KQorICAgICAgICAsIG1fdmFsdWUodDYpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZW5jb2Rl
KEFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKKyAgICB7CisgICAgICAgIEFyZ3VtZW50
czU8VDEsIFQyLCBUMywgVDQsIFQ1Pjo6ZW5jb2RlKGVuY29kZXIpOworICAgICAgICBlbmNvZGVy
LT5lbmNvZGUobV92YWx1ZSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sIGRlY29kZShB
cmd1bWVudERlY29kZXIqIGRlY29kZXIsIEFyZ3VtZW50czY8VDEsIFQyLCBUMywgVDQsIFQ1LCBU
Nj4mIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGlmICghQXJndW1lbnRzNTxUMSwgVDIsIFQzLCBU
NCwgVDU+OjpkZWNvZGUoZGVjb2RlciwgcmVzdWx0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lm1fdmFs
dWUpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBUNiBtX3ZhbHVlOworfTsKKwordGVtcGxhdGU8
dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyLCB0eXBlbmFtZSBUMywgdHlwZW5hbWUgVDQsIHR5cGVu
YW1lIFQ1LCB0eXBlbmFtZSBUNj4gQXJndW1lbnRzNjxjb25zdCBUMSYsIGNvbnN0IFQyJiwgY29u
c3QgVDMmLCBjb25zdCBUNCYsIGNvbnN0IFQ1JiwgY29uc3QgVDYmPiBJbihjb25zdCBUMSYgdDEs
IGNvbnN0IFQyJiB0MiwgY29uc3QgVDMgJnQzLCBjb25zdCBUNCYgdDQsIGNvbnN0IFQ1JiB0NSwg
Y29uc3QgVDYmIHQ2KQoreworICAgIHJldHVybiBBcmd1bWVudHM2PGNvbnN0IFQxJiwgY29uc3Qg
VDImLCBjb25zdCBUMyYsIGNvbnN0IFQ0JiwgY29uc3QgVDUmLCBjb25zdCBUNiY+KHQxLCB0Miwg
dDMsIHQ0LCB0NSwgdDYpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDIs
IHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUNCwgdHlwZW5hbWUgVDUsIHR5cGVuYW1lIFQ2PiBBcmd1
bWVudHM2PFQxJiwgVDImLCBUMyYsIFQ0JiwgVDUmLCBUNiY+IE91dChUMSYgdDEsIFQyJiB0Miwg
VDMmIHQzLCBUNCYgdDQsIFQ1JiB0NSwgVDYmIHQ2KQoreworICAgIHJldHVybiBBcmd1bWVudHM2
PFQxJiwgVDImLCBUMyYsIFQ0JiwgVDUmLCBUNiY+KHQxLCB0MiwgdDMsIHQ0LCB0NSwgdDYpOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBDb3JlSVBDCiAKICNlbmRpZiAvLyBBcmd1bWVudHNfaApJbmRl
eDogV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUGFnZVBy
b3h5TWVzc2FnZUtpbmRzLmgJKHJldmlzaW9uIDY2NzM4KQorKysgV2ViS2l0Mi9TaGFyZWQvQ29y
ZUlQQ1N1cHBvcnQvV2ViUGFnZVByb3h5TWVzc2FnZUtpbmRzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDYgKzY3LDcgQEAgZW51bSBLaW5kIHsKICAgICBTZXRUb29sVGlwLAogICAgIFRha2VGb2N1
cywKICAgICBXaWxsU3VibWl0Rm9ybSwKKyAgICBXaWxsU3VibWl0Rm9ybVdpdGhVc2VyRGF0YSwK
ICAgICAKICAgICBCYWNrRm9yd2FyZEFkZEl0ZW0sCiAgICAgQmFja0ZvcndhcmRHb1RvSXRlbSwK
SW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCShyZXZpc2lvbiA2NjczOCkKKysr
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw3ICs0NSw3IEBAIHZvaWQgV2ViRm9ybUNsaWVudDo6aW5pdGlhbGl6ZShjb25zdCBXS1AKICAg
ICAgICAgbWVtc2V0KCZtX3BhZ2VGb3JtQ2xpZW50LCAwLCBzaXplb2YobV9wYWdlRm9ybUNsaWVu
dCkpOwogfQogCi1ib29sIFdlYkZvcm1DbGllbnQ6OndpbGxTdWJtaXRGb3JtKFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1l
LCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiA+JiB0ZXh0RmllbGRWYWx1ZXMsIFdl
YkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCitib29sIFdlYkZvcm1DbGll
bnQ6OndpbGxTdWJtaXRGb3JtKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUsIFdlYkZyYW1lUHJveHkqIHNvdXJjZUZyYW1lLCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywg
U3RyaW5nPiA+JiB0ZXh0RmllbGRWYWx1ZXMsIEFQSU9iamVjdCogdXNlckRhdGEsIFdlYkZvcm1T
dWJtaXNzaW9uTGlzdGVuZXJQcm94eSogbGlzdGVuZXIpCiB7CiAgICAgaWYgKCFtX3BhZ2VGb3Jt
Q2xpZW50LndpbGxTdWJtaXRGb3JtKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC01Myw5ICs1
Myw5IEBAIGJvb2wgV2ViRm9ybUNsaWVudDo6d2lsbFN1Ym1pdEZvcm0oV2ViUGEKICAgICBJbW11
dGFibGVEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHRleHRGaWVsZFZhbHVlcy5zaXplKCk7ICsraSkKICAgICAgICAgbWFwLnNldCh0ZXh0RmllbGRW
YWx1ZXNbaV0uZmlyc3QsIFdlYlN0cmluZzo6Y3JlYXRlKHRleHRGaWVsZFZhbHVlc1tpXS5zZWNv
bmQpKTsKLQogICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiB0ZXh0RmllbGRzTWFwID0g
SW1tdXRhYmxlRGljdGlvbmFyeTo6YWRvcHQobWFwKTsKLSAgICBtX3BhZ2VGb3JtQ2xpZW50Lndp
bGxTdWJtaXRGb3JtKHRvUmVmKHBhZ2UpLCB0b1JlZihmcmFtZSksIHRvUmVmKHNvdXJjZUZyYW1l
KSwgdG9SZWYodGV4dEZpZWxkc01hcC5nZXQoKSksIHRvUmVmKGxpc3RlbmVyKSwgbV9wYWdlRm9y
bUNsaWVudC5jbGllbnRJbmZvKTsKKworICAgIG1fcGFnZUZvcm1DbGllbnQud2lsbFN1Ym1pdEZv
cm0odG9SZWYocGFnZSksIHRvUmVmKGZyYW1lKSwgdG9SZWYoc291cmNlRnJhbWUpLCB0b1JlZih0
ZXh0RmllbGRzTWFwLmdldCgpKSwgdG9SZWYodXNlckRhdGEpLCB0b1JlZihsaXN0ZW5lciksIG1f
cGFnZUZvcm1DbGllbnQuY2xpZW50SW5mbyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKSW5kZXg6
IFdlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGb3JtQ2xpZW50LmgJKHJldmlzaW9uIDY2NzM4KQorKysgV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRm9ybUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBBUElPYmplY3Q7CiBjbGFzcyBXZWJQYWdl
UHJveHk7CiBjbGFzcyBXZWJGcmFtZVByb3h5OwogY2xhc3MgV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5OwpAQCAtNDIsOCArNDMsNyBAQCBwdWJsaWM6CiAgICAgV2ViRm9ybUNsaWVudCgp
OwogICAgIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXS1BhZ2VGb3JtQ2xpZW50Kik7CiAKLSAgICAv
LyBGSVhNRTogQWRkIHNvbWUgdHlwZSBvZiBmb3JtIGVsZW1lbnQgcmVmZXJlbmNlIG9yIGFub3Rh
dGVkIHVzZXIgZGF0YS4KLSAgICBib29sIHdpbGxTdWJtaXRGb3JtKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4gPiYgdGV4dEZpZWxkVmFsdWVzLCBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkq
KTsgCisgICAgYm9vbCB3aWxsU3VibWl0Rm9ybShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5
KiwgV2ViRnJhbWVQcm94eSosIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4mIHRl
eHRGaWVsZFZhbHVlcywgQVBJT2JqZWN0KiB1c2VyRGF0YSwgV2ViRm9ybVN1Ym1pc3Npb25MaXN0
ZW5lclByb3h5Kik7IAogCiBwcml2YXRlOgogICAgIFdLUGFnZUZvcm1DbGllbnQgbV9wYWdlRm9y
bUNsaWVudDsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gNjY3
MzgpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5j
bHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0SXRlbS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHQuaCIK
KyNpbmNsdWRlICJXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJD
b3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJEYXRhLmgiCiAjaW5jbHVkZSAiV2Vi
RXZlbnQuaCIKQEAgLTU3Nyw3ICs1NzgsMjIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2Vp
dmVNZXNzYWdlKENvcgogICAgICAgICAgICAgdWludDY0X3QgbGlzdGVuZXJJRDsKICAgICAgICAg
ICAgIGlmICghYXJndW1lbnRzLT5kZWNvZGUoQ29yZUlQQzo6T3V0KGZyYW1lSUQsIHNvdXJjZUZy
YW1lSUQsIHRleHRGaWVsZFZhbHVlcywgbGlzdGVuZXJJRCkpKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIHdpbGxTdWJtaXRGb3JtKHByb2Nlc3MoKS0+d2ViRnJhbWUoZnJh
bWVJRCksIHByb2Nlc3MoKS0+d2ViRnJhbWUoc291cmNlRnJhbWVJRCksIHRleHRGaWVsZFZhbHVl
cywgbGlzdGVuZXJJRCk7CisgICAgICAgICAgICB3aWxsU3VibWl0Rm9ybShwcm9jZXNzKCktPndl
YkZyYW1lKGZyYW1lSUQpLCBwcm9jZXNzKCktPndlYkZyYW1lKHNvdXJjZUZyYW1lSUQpLCB0ZXh0
RmllbGRWYWx1ZXMsIDAvKnVzZXJEYXRhKi8sIGxpc3RlbmVySUQpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBXZWJQYWdlUHJveHlNZXNzYWdlOjpXaWxsU3Vi
bWl0Rm9ybVdpdGhVc2VyRGF0YTogeworICAgICAgICAgICAgdWludDY0X3QgZnJhbWVJRDsKKyAg
ICAgICAgICAgIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQ7CisgICAgICAgICAgICBWZWN0b3I8c3Rk
OjpwYWlyPFN0cmluZywgU3RyaW5nPiA+IHRleHRGaWVsZFZhbHVlczsKKyAgICAgICAgICAgIHVp
bnQ2NF90IGxpc3RlbmVySUQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2Rl
ciBtZXNzYWdlRGVjb2Rlcih1c2VyRGF0YSwgcGFnZU5hbWVzcGFjZSgpLT5jb250ZXh0KCkpOwor
CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChmcmFtZUlE
LCBzb3VyY2VGcmFtZUlELCB0ZXh0RmllbGRWYWx1ZXMsIGxpc3RlbmVySUQsIG1lc3NhZ2VEZWNv
ZGVyKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB3aWxsU3VibWl0
Rm9ybShwcm9jZXNzKCktPndlYkZyYW1lKGZyYW1lSUQpLCBwcm9jZXNzKCktPndlYkZyYW1lKHNv
dXJjZUZyYW1lSUQpLCB0ZXh0RmllbGRWYWx1ZXMsIHVzZXJEYXRhLmdldCgpLCBsaXN0ZW5lcklE
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIApAQCAtODc2LDEwICs4
OTIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck1JTUVUeQogCiAvLyBG
b3JtQ2xpZW50CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybShXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgV2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUsIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+ID4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJRCkK
K3ZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3VibWl0Rm9ybShXZWJGcmFtZVByb3h5KiBmcmFtZSwg
V2ViRnJhbWVQcm94eSogc291cmNlRnJhbWUsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+ID4mIHRleHRGaWVsZFZhbHVlcywgQVBJT2JqZWN0KiB1c2VyRGF0YSwgdWludDY0X3QgbGlz
dGVuZXJJRCkKIHsKICAgICBSZWZQdHI8V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5PiBs
aXN0ZW5lciA9IGZyYW1lLT5zZXRVcEZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eShsaXN0ZW5l
cklEKTsKLSAgICBpZiAoIW1fZm9ybUNsaWVudC53aWxsU3VibWl0Rm9ybSh0aGlzLCBmcmFtZSwg
c291cmNlRnJhbWUsIHRleHRGaWVsZFZhbHVlcywgbGlzdGVuZXIuZ2V0KCkpKQorICAgIGlmICgh
bV9mb3JtQ2xpZW50LndpbGxTdWJtaXRGb3JtKHRoaXMsIGZyYW1lLCBzb3VyY2VGcmFtZSwgdGV4
dEZpZWxkVmFsdWVzLCB1c2VyRGF0YSwgbGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICBsaXN0ZW5l
ci0+Y29udGludWVTdWJtaXNzaW9uKCk7CiB9CiAKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiA2NjczOCkKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJGcmFtZVByb3h5KiwgV2ViQ29yZTo6TmF2
aWdhdGlvblR5cGUgbmF2aWdhdGlvblR5cGUsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJz
LCBjb25zdCBXVEY6OlN0cmluZyYgdXJsLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck1JTUVUeXBlKFdlYkZyYW1lUHJveHkqLCBjb25zdCBXVEY6OlN0cmlu
ZyYgTUlNRVR5cGUsIGNvbnN0IFdURjo6U3RyaW5nJiB1cmwsIHVpbnQ2NF90IGxpc3RlbmVySUQp
OwogCi0gICAgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViRnJh
bWVQcm94eSogZnJhbWVTb3VyY2UsIFZlY3RvcjxzdGQ6OnBhaXI8V1RGOjpTdHJpbmcsIFdURjo6
U3RyaW5nPiA+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxpc3RlbmVySUQpOworICAgIHZv
aWQgd2lsbFN1Ym1pdEZvcm0oV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYkZyYW1lUHJveHkqIGZy
YW1lU291cmNlLCBWZWN0b3I8c3RkOjpwYWlyPFdURjo6U3RyaW5nLCBXVEY6OlN0cmluZz4gPiYg
dGV4dEZpZWxkVmFsdWVzLCBBUElPYmplY3QqLCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKIAogICAg
IFBhc3NSZWZQdHI8V2ViUGFnZVByb3h5PiBjcmVhdGVOZXdQYWdlKCk7CiAgICAgdm9pZCBzaG93
UGFnZSgpOwpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHJldmlzaW9uIDY2NzM4KQor
KysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCBzdHJ1Y3QgV0tQYWdlUG9saWN5Q2xpZW50IHsKIHR5cGVkZWYgc3RydWN0
IFdLUGFnZVBvbGljeUNsaWVudCBXS1BhZ2VQb2xpY3lDbGllbnQ7CiAKIC8vIEZvcm0gQ2xpZW50
LgotdHlwZWRlZiB2b2lkICgqV0tQYWdlV2lsbFN1Ym1pdEZvcm1DYWxsYmFjaykoV0tQYWdlUmVm
IHBhZ2UsIFdLRnJhbWVSZWYgZnJhbWUsIFdLRnJhbWVSZWYgc291cmNlRnJhbWUsIFdLRGljdGlv
bmFyeVJlZiB2YWx1ZXMsIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1BhZ2VXaWxsU3VibWl0Rm9y
bUNhbGxiYWNrKShXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tGcmFtZVJlZiBz
b3VyY2VGcmFtZSwgV0tEaWN0aW9uYXJ5UmVmIHZhbHVlcywgV0tUeXBlUmVmIHVzZXJEYXRhLCBX
S0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogCiBzdHJ1Y3QgV0tQYWdlRm9ybUNsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9u
OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxl
UGFnZUZvcm1DbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmNwcAkocmV2aXNpb24gNjY3
MzgpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDExIEBACiAKICNp
bmNsdWRlICJJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgiCiAKKyNpbmNsdWRlICJJbW11
dGFibGVEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCisj
aW5jbHVkZSA8V2ViQ29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hU
TUxJbnB1dEVsZW1lbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aD4KIApAQCAtNDgsNyArNTAsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6
OmluaXRpCiAgICAgICAgIG1lbXNldCgmbV9jbGllbnQsIDAsIHNpemVvZihtX2NsaWVudCkpOwog
fQogCi12b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERpZEJlZ2lu
RWRpdGluZyhXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVs
ZW1lbnQsIFdlYkZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVu
dDo6dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKFdlYlBhZ2UqIHBhZ2UsIEhUTUxJbnB1dEVsZW1l
bnQqIGlucHV0RWxlbWVudCwgV2ViRnJhbWUqIGZyYW1lKQogewogICAgIGlmICghbV9jbGllbnQu
dGV4dEZpZWxkRGlkQmVnaW5FZGl0aW5nKQogICAgICAgICByZXR1cm47CkBAIC01Nyw3ICs1OSw3
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlRm9ybUNsaWVudDo6dGV4dEYKICAgICBtX2NsaWVu
dC50ZXh0RmllbGREaWRCZWdpbkVkaXRpbmcodG9SZWYocGFnZSksIHRvUmVmKG5vZGVIYW5kbGUu
Z2V0KCkpLCB0b1JlZihmcmFtZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCi12b2lkIElu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERpZEVuZEVkaXRpbmcoV2ViUGFn
ZSogcGFnZSwgV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBXZWJGcmFt
ZSogZnJhbWUpCit2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHRGaWVsZERp
ZEVuZEVkaXRpbmcoV2ViUGFnZSogcGFnZSwgSFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50
LCBXZWJGcmFtZSogZnJhbWUpCiB7CiAgICAgaWYgKCFtX2NsaWVudC50ZXh0RmllbGREaWRFbmRF
ZGl0aW5nKQogICAgICAgICByZXR1cm47CkBAIC02Niw3ICs2OCw3IEBAIHZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRm9ybUNsaWVudDo6dGV4dEYKICAgICBtX2NsaWVudC50ZXh0RmllbGREaWRFbmRF
ZGl0aW5nKHRvUmVmKHBhZ2UpLCB0b1JlZihub2RlSGFuZGxlLmdldCgpKSwgdG9SZWYoZnJhbWUp
LCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3Jt
Q2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGQoV2ViUGFnZSogcGFnZSwgV2ViQ29yZTo6
SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50LCBXZWJGcmFtZSogZnJhbWUpCit2b2lkIElu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQ6OnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChXZWJQ
YWdlKiBwYWdlLCBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQsIFdlYkZyYW1lKiBmcmFt
ZSkKIHsKICAgICBpZiAoIW1fY2xpZW50LnRleHREaWRDaGFuZ2VJblRleHRGaWVsZCkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNzUsNyArNzcsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZUZvcm1D
bGllbnQ6OnRleHRECiAgICAgbV9jbGllbnQudGV4dERpZENoYW5nZUluVGV4dEZpZWxkKHRvUmVm
KHBhZ2UpLCB0b1JlZihub2RlSGFuZGxlLmdldCgpKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5j
bGllbnRJbmZvKTsKIH0KIAotdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp0ZXh0
RGlkQ2hhbmdlSW5UZXh0QXJlYShXZWJQYWdlKiBwYWdlLCBXZWJDb3JlOjpIVE1MVGV4dEFyZWFF
bGVtZW50KiB0ZXh0QXJlYUVsZW1lbnQsIFdlYkZyYW1lKiBmcmFtZSkKK3ZvaWQgSW5qZWN0ZWRC
dW5kbGVQYWdlRm9ybUNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViUGFnZSogcGFn
ZSwgSFRNTFRleHRBcmVhRWxlbWVudCogdGV4dEFyZWFFbGVtZW50LCBXZWJGcmFtZSogZnJhbWUp
CiB7CiAgICAgaWYgKCFtX2NsaWVudC50ZXh0RGlkQ2hhbmdlSW5UZXh0QXJlYSkKICAgICAgICAg
cmV0dXJuOwpAQCAtODQsNCArODYsMjEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xp
ZW50Ojp0ZXh0RAogICAgIG1fY2xpZW50LnRleHREaWRDaGFuZ2VJblRleHRBcmVhKHRvUmVmKHBh
Z2UpLCB0b1JlZihub2RlSGFuZGxlLmdldCgpKSwgdG9SZWYoZnJhbWUpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAordm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50Ojp3aWxsU3Vi
bWl0Rm9ybShXZWJQYWdlKiBwYWdlLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm1FbGVtZW50LCBXZWJG
cmFtZSogZnJhbWUsIFdlYkZyYW1lKiBzb3VyY2VGcmFtZSwgY29uc3QgVmVjdG9yPHN0ZDo6cGFp
cjxTdHJpbmcsIFN0cmluZz4gPiYgdmFsdWVzLCBSZWZQdHI8QVBJT2JqZWN0PiYgdXNlckRhdGEp
Cit7CisgICAgaWYgKCFtX2NsaWVudC53aWxsU3VibWl0Rm9ybSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZT4gbm9kZUhhbmRsZSA9IEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZTo6Z2V0T3JDcmVhdGUoZm9ybUVsZW1lbnQpOworCisgICAgSW1t
dXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB2YWx1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIG1hcC5zZXQodmFsdWVzW2ldLmZpcnN0LCBX
ZWJTdHJpbmc6OmNyZWF0ZSh2YWx1ZXNbaV0uc2Vjb25kKSk7CisgICAgUmVmUHRyPEltbXV0YWJs
ZURpY3Rpb25hcnk+IHRleHRGaWVsZHNNYXAgPSBJbW11dGFibGVEaWN0aW9uYXJ5OjphZG9wdCht
YXApOworCisgICAgV0tUeXBlUmVmIHVzZXJEYXRhVG9QYXNzID0gMDsKKyAgICBtX2NsaWVudC53
aWxsU3VibWl0Rm9ybSh0b1JlZihwYWdlKSwgdG9SZWYobm9kZUhhbmRsZS5nZXQoKSksIHRvUmVm
KGZyYW1lKSwgdG9SZWYoc291cmNlRnJhbWUpLCB0b1JlZih0ZXh0RmllbGRzTWFwLmdldCgpKSwg
JnVzZXJEYXRhVG9QYXNzLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKKyAgICB1c2VyRGF0YSA9IGFk
b3B0UmVmKHRvV0sodXNlckRhdGFUb1Bhc3MpKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQ
YWdlRm9ybUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VGb3JtQ2xpZW50LmgJKHJldmlzaW9uIDY2NzM4KQor
KysgV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZUZv
cm1DbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYgKzI3LDIyIEBACiAjZGVmaW5lIElu
amVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnRfaAogCiAjaW5jbHVkZSAiV0tCdW5kbGVQYWdlLmgi
CisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgSFRNTEZv
cm1FbGVtZW50OwogICAgIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CiAgICAgY2xhc3MgSFRNTFRl
eHRBcmVhRWxlbWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIEFQSU9iamVj
dDsKIGNsYXNzIFdlYkZyYW1lOwogY2xhc3MgV2ViUGFnZTsKK2NsYXNzIEltbXV0YWJsZURpY3Rp
b25hcnk7CiAKIGNsYXNzIEluamVjdGVkQnVuZGxlUGFnZUZvcm1DbGllbnQgewogcHVibGljOgpA
QCAtNDgsNiArNTQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5UZXh0Rmll
bGQoV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqLCBXZWJGcmFtZSopOwogICAg
IHZvaWQgdGV4dERpZENoYW5nZUluVGV4dEFyZWEoV2ViUGFnZSosIFdlYkNvcmU6OkhUTUxUZXh0
QXJlYUVsZW1lbnQqLCBXZWJGcmFtZSopOwogCisgICAgdm9pZCB3aWxsU3VibWl0Rm9ybShXZWJQ
YWdlKiwgV2ViQ29yZTo6SFRNTEZvcm1FbGVtZW50KiwgV2ViRnJhbWUqLCBXZWJGcmFtZSogc291
cmNlRnJhbWUsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+ID4mLCBSZWZQ
dHI8QVBJT2JqZWN0PiYgdXNlckRhdGEpOworCiBwcml2YXRlOgogICAgIFdLQnVuZGxlUGFnZUZv
cm1DbGllbnQgbV9jbGllbnQ7CiB9OwpJbmRleDogV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9jL1dLQnVuZGxlUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZVBhZ2UuaAkocmV2aXNpb24gNjY3Mzgp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEzOCw2ICsxMzgsNyBAQCB0eXBlZGVmIHZvaWQgKCpXS0J1
bmRsZVBhZ2VUZXh0RmllbGREaWRCCiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VUZXh0Rmll
bGREaWRFbmRFZGl0aW5nQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS0J1bmRsZU5v
ZGVIYW5kbGVSZWYgaHRtbElucHV0RWxlbWVudEhhbmRsZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFt
ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZVBhZ2VU
ZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjaykoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdL
QnVuZGxlTm9kZUhhbmRsZVJlZiBodG1sSW5wdXRFbGVtZW50SGFuZGxlLCBXS0J1bmRsZUZyYW1l
UmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldLQnVu
ZGxlUGFnZVRleHREaWRDaGFuZ2VJblRleHRBcmVhQ2FsbGJhY2spKFdLQnVuZGxlUGFnZVJlZiBw
YWdlLCBXS0J1bmRsZU5vZGVIYW5kbGVSZWYgaHRtbFRleHRBcmVhRWxlbWVudEhhbmRsZSwgV0tC
dW5kbGVGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS0J1bmRsZVBhZ2VXaWxsU3VibWl0Rm9ybUNhbGxiYWNrKShXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVOb2RlSGFuZGxlUmVmIGh0bWxGb3JtRWxlbWVudEhhbmRsZSwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tCdW5kbGVGcmFtZVJlZiBzb3VyY2VGcmFtZSwgV0tEaWN0aW9u
YXJ5UmVmIHZhbHVlcywgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiAKIHN0cnVjdCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50IHsKICAgICBpbnQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZl
cnNpb247CkBAIC0xNDYsNiArMTQ3LDcgQEAgc3RydWN0IFdLQnVuZGxlUGFnZUZvcm1DbGllbnQg
ewogICAgIFdLQnVuZGxlUGFnZVRleHRGaWVsZERpZEVuZEVkaXRpbmdDYWxsYmFjayAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkRGlkRW5kRWRpdGluZzsKICAgICBXS0J1bmRsZVBh
Z2VUZXh0RGlkQ2hhbmdlSW5UZXh0RmllbGRDYWxsYmFjayAgICAgICAgICAgICAgICAgICAgICAg
IHRleHREaWRDaGFuZ2VJblRleHRGaWVsZDsKICAgICBXS0J1bmRsZVBhZ2VUZXh0RGlkQ2hhbmdl
SW5UZXh0QXJlYUNhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgIHRleHREaWRDaGFuZ2VJ
blRleHRBcmVhOworICAgIFdLQnVuZGxlUGFnZVdpbGxTdWJtaXRGb3JtQ2FsbGJhY2sgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbFN1Ym1pdEZvcm07CiB9OwogdHlwZWRlZiBz
dHJ1Y3QgV0tCdW5kbGVQYWdlRm9ybUNsaWVudCBXS0J1bmRsZVBhZ2VGb3JtQ2xpZW50OwogCklu
ZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDY2NzM4KQorKysgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgsNiArMjgsNyBAQAogI2RlZmluZSBESVNBQkxFX05PVF9JTVBMRU1FTlRFRF9X
QVJOSU5HUyAxCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKIAorI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5o
IgogI2luY2x1ZGUgIlBsdWdpblZpZXcuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2Rl
cnMuaCIKQEAgLTUwMiwyMCArNTAzLDMyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoVW5hYmwKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUpCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaFdpbGxTdWJtaXRGb3JtKEZyYW1lUG9saWN5RnVuY3Rpb24gZnVu
Y3Rpb24sIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBwcnBGb3JtU3RhdGUpCiB7CiAgICAgV2ViUGFn
ZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXdlYlBhZ2UpCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIEZJWE1FOiBQYXNzIG1vcmUgb2YgdGhlIGZvcm0gc3RhdGUuCisg
ICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gcHJwRm9ybVN0YXRlOworICAgIAorICAg
IEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGZvcm1TdGF0ZS0+Zm9ybSgpOworICAgIFdlYkZyYW1l
KiBzb3VyY2VGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZm9ybVN0
YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOyAgICAK
KyAgICBjb25zdCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPiA+JiB2YWx1ZXMgPSBm
b3JtU3RhdGUtPnRleHRGaWVsZFZhbHVlcygpOwogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9
IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoZnVuY3Rpb24pOworICAgIFJlZlB0cjxBUElP
YmplY3Q+IHVzZXJEYXRhOworICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlRm9ybUNsaWVudCgp
LndpbGxTdWJtaXRGb3JtKHdlYlBhZ2UsIGZvcm0sIG1fZnJhbWUsIHNvdXJjZUZyYW1lLCB2YWx1
ZXMsIHVzZXJEYXRhKTsKIAotICAgIFdlYkZyYW1lKiBzb3VyY2VGcmFtZSA9IHN0YXRpY19jYXN0
PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZm9ybVN0YXRlLT5zb3VyY2VGcmFtZSgpLT5sb2FkZXIo
KS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOyAgICAKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgp
LmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNzYWdlOjpXaWxsU3VibWl0Rm9ybSwg
d2ViUGFnZS0+cGFnZUlEKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENvcmVJUEM6OkluKG1fZnJhbWUtPmZyYW1lSUQoKSwgc291cmNlRnJhbWUtPmZyYW1l
SUQoKSwgZm9ybVN0YXRlLT50ZXh0RmllbGRWYWx1ZXMoKSwgbGlzdGVuZXJJRCkpOworICAgIHVp
bnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKGZ1bmN0aW9u
KTsKKworICAgIGlmICh1c2VyRGF0YSkgeworICAgICAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5j
b25uZWN0aW9uKCktPnNlbmQoV2ViUGFnZVByb3h5TWVzc2FnZTo6V2lsbFN1Ym1pdEZvcm1XaXRo
VXNlckRhdGEsIHdlYlBhZ2UtPnBhZ2VJRCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29yZUlQQzo6SW4obV9mcmFtZS0+ZnJhbWVJRCgpLCBzb3Vy
Y2VGcmFtZS0+ZnJhbWVJRCgpLCB2YWx1ZXMsIGxpc3RlbmVySUQsIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIH0gZWxzZSB7CisgICAgICAg
IFdlYlByb2Nlc3M6OnNoYXJlZCgpLmNvbm5lY3Rpb24oKS0+c2VuZChXZWJQYWdlUHJveHlNZXNz
YWdlOjpXaWxsU3VibWl0Rm9ybSwgd2ViUGFnZS0+cGFnZUlEKCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlSVBDOjpJbihtX2ZyYW1lLT5mcmFt
ZUlEKCksIHNvdXJjZUZyYW1lLT5mcmFtZUlEKCksIHZhbHVlcywgbGlzdGVuZXJJRCkpOworICAg
IH0KIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMb2FkTWFpblJl
c291cmNlKERvY3VtZW50TG9hZGVyKikK
</data>
<flag name="review"
          id="55631"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>