<?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>116253</bug_id>
          
          <creation_ts>2013-05-16 17:10:14 -0700</creation_ts>
          <short_desc>Replace WebFrameLoaderClient static_casts with a function that might return null</short_desc>
          <delta_ts>2013-05-17 12:49:03 -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>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>890058</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-16 17:10:14 -0700</bug_when>
    <thetext>Replace WebFrameLoaderClient static_casts with a function that might return null

Spun off from https://bugs.webkit.org/show_bug.cgi?id=115917

This bug is about WebKit2.  We should handle WebKit1 separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890069</commentid>
    <comment_count>1</comment_count>
      <attachid>202006</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-16 17:15:03 -0700</bug_when>
    <thetext>Created attachment 202006
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890571</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-17 12:12:07 -0700</bug_when>
    <thetext>Somethings clearly off in the weeds on the EWS bot.  Landing soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890572</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-17 12:15:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/150282</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890595</commentid>
    <comment_count>4</comment_count>
      <attachid>202006</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2013-05-17 12:44:59 -0700</bug_when>
    <thetext>Comment on attachment 202006
Patch v1 

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

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:182
&gt;  void WebChromeClient::focusedFrameChanged(Frame* frame)
&gt;  {
&gt; -    WebFrame* webFrame = frame ? static_cast&lt;WebFrameLoaderClient*&gt;(frame-&gt;loader()-&gt;client())-&gt;webFrame() : 0;
&gt; +    WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(frame-&gt;loader()-&gt;client());
&gt; +    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient-&gt;webFrame() : 0;

This function no longer null-checks the &apos;frame&apos; argument.

Just got this crash on ToT:
0   com.apple.WebKit2             	0x000000010e7e1e0e WebKit::WebChromeClient::focusedFrameChanged(WebCore::Frame*) + 18 (FrameLoader.h:197)
1   com.apple.WebCore             	0x000000010f5d4dce WebCore::FocusController::setFocusedFrame(WTF::PassRefPtr&lt;WebCore::Frame&gt;) + 590 (FocusController.cpp:201)
2   com.apple.WebCore             	0x000000010f5f6b8d WebCore::Frame::willDetachPage() + 221 (PassRefPtr.h:67)
3   com.apple.WebCore             	0x000000010f6032c7 WebCore::FrameLoader::detachFromParent() + 471 (FrameLoader.cpp:2402)
4   com.apple.WebKit2             	0x000000010e82ada3 WebKit::WebPage::close() + 393 (WebPage.cpp:855)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890602</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-05-17 12:49:03 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 202006 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202006&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp:182
&gt; &gt;  void WebChromeClient::focusedFrameChanged(Frame* frame)
&gt; &gt;  {
&gt; &gt; -    WebFrame* webFrame = frame ? static_cast&lt;WebFrameLoaderClient*&gt;(frame-&gt;loader()-&gt;client())-&gt;webFrame() : 0;
&gt; &gt; +    WebFrameLoaderClient* webFrameLoaderClient = toWebFrameLoaderClient(frame-&gt;loader()-&gt;client());
&gt; &gt; +    WebFrame* webFrame = webFrameLoaderClient ? webFrameLoaderClient-&gt;webFrame() : 0;
&gt; 
&gt; This function no longer null-checks the &apos;frame&apos; argument.
&gt; 
&gt; Just got this crash on ToT:
&gt; 0   com.apple.WebKit2                 0x000000010e7e1e0e WebKit::WebChromeClient::focusedFrameChanged(WebCore::Frame*) + 18 (FrameLoader.h:197)
&gt; 1   com.apple.WebCore                 0x000000010f5d4dce WebCore::FocusController::setFocusedFrame(WTF::PassRefPtr&lt;WebCore::Frame&gt;) + 590 (FocusController.cpp:201)
&gt; 2   com.apple.WebCore                 0x000000010f5f6b8d WebCore::Frame::willDetachPage() + 221 (PassRefPtr.h:67)
&gt; 3   com.apple.WebCore                 0x000000010f6032c7 WebCore::FrameLoader::detachFromParent() + 471 (FrameLoader.cpp:2402)
&gt; 4   com.apple.WebKit2                 0x000000010e82ada3 WebKit::WebPage::close() + 393 (WebPage.cpp:855)

Yikes.

Fixed in http://trac.webkit.org/changeset/150288</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202006</attachid>
            <date>2013-05-16 17:15:03 -0700</date>
            <delta_ts>2013-05-17 12:44:59 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32733</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhOTA1YTYyLi41NGYwYTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODEg
QEAKIDIwMTMtMDUtMTYgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIFJlcGxhY2UgV2ViRnJhbWVMb2FkZXJDbGllbnQgc3RhdGljX2Nhc3RzIHdpdGggYSBmdW5j
dGlvbiB0aGF0IG1pZ2h0IHJldHVybiBudWxsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE2MjUzCisKKyAgICAgICAgVGhlIGdlbmVyYWwgYXBwcm9h
Y2ggaGVyZSBpczoKKyAgICAgICAgMSAtIEludHJvZHVjZSBhIHRvV2ViRnJhbWVMb2FkZXJDbGll
bnQoKSBmdW5jdGlvbiB0byBjb252ZXJ0IEZyYW1lTG9hZGVyQ2xpZW50cywgYW5kIHRoYXQgbWF5
IHJldHVybiBudWxsLgorICAgICAgICAyIC0gQWRvcHQgdG9XZWJGcmFtZUxvYWRlckNsaWVudCgp
IGV2ZXJ5d2hlcmUgd2UgdXNlZCB0byBkbyBhIGRpcmVjdCBzdGF0aWNfY2FzdDxXZWJGcmFtZUxv
YWRlckNsaWVudCo+CisgICAgICAgIDMgLSBJbiBmdW5jdGlvbnMgdGhhdCBhbHJlYWR5IHN1cHBv
cnQgYSAicmV0dXJuIDAiIHNjZW5hcmlvLCBhIGZhaWxlZCBjYXN0IHJlc3VsdHMgaW4gYSByZXR1
cm4gMC4KKyAgICAgICAgNCAtIEluIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFzc3VtZSBubyBmYWls
dXJlIHRvIGdldCB0aGUgV2ViRnJhbWVMb2FkZXJDbGllbnQsIGFkZCBhbiBBU1NFUlQuCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSB1dGls
aXR5IGZ1bmN0aW9uIHRvIGNhc3Q6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAoV2ViS2l0Ojp0b1dlYkZyYW1lTG9h
ZGVyQ2xpZW50KToKKworICAgICAgICBBZG9wdCBpdCBldmVyeXdoZXJlOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
cjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24pOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpkb2N1bWVudEZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpodG1sRnJhbWVFbGVtZW50Q29u
dGVudEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpo
dG1sSUZyYW1lRWxlbWVudENvbnRlbnRGcmFtZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0
ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0UnVubmVyKToKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRl
bnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVu
c2lvbjo6ZnJhbWUpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1
bmRsZUhpdFRlc3RSZXN1bHQ6OmZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5k
bGVIaXRUZXN0UmVzdWx0Ojp0YXJnZXRGcmFtZSk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05l
dHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQpOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0Ojp3ZWJQYWdlKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGVyZm9ybUZyYW1lTG9hZFVSTFJlcXVlc3Qp
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWROb2RlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Zm9jdXNlZEZyYW1lQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2Ny
aXB0QWxlcnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3Jp
cHRDb25maXJtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5KYXZhU2Ny
aXB0UHJvbXB0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpwcmludCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorCisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyk6
CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dGV4dEZpZWxkRGlkRW5kRWRpdGlu
Zyk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6dGV4dERpZENoYW5nZUluVGV4
dEZpZWxkKToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdl
SW5UZXh0QXJlYSk6CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZG9UZXh0Rmll
bGRDb21tYW5kRnJvbUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdG9yQ2xpZW50Ojp0
ZXh0V2lsbEJlRGVsZXRlZEluVGV4dEZpZWxkKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0p
OgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWU6OmNvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6cGFyZW50RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2hpbGRG
cmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVGaWx0ZXI6OnNob3VsZEluY2x1ZGVTdWJmcmFtZSk6CisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6Om1haW5GcmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKToKKworMjAxMy0w
NS0xNiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgc3ZnL2Fz
LWltYWdlL2ltZy16b29tLXN2Zy1zdHlsZXNoZWV0Lmh0bWwgY3Jhc2hlcyB3aXRoIE5ldHdvcmtQ
cm9jZXNzIGVuYWJsZWQuCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMzgzNzQwOD4gYW5kIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTU5MTcKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAppbmRleCA5OWI0
NzQzLi45NGI0NjRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xv
Y2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyLmNwcApAQCAtNjIsNyArNjIsMTAgQEAgdm9pZCBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24oR2VvbG9jYXRp
b24KIAogICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFtZSgpOwogCi0gICAgV2Vi
RnJhbWUqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmcmFt
ZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKKyAgICBXZWJGcmFtZUxvYWRlckNs
aWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1l
TG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOworICAg
IEFTU0VSVCh3ZWJGcmFtZSk7CisKICAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKGdl
b2xvY2F0aW9uSUQsIHdlYkZyYW1lLT5mcmFtZUlEKCksIG9yaWdpbi0+ZGF0YWJhc2VJZGVudGlm
aWVyKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGUuY3Bw
CmluZGV4IDQ3ZDU3YjcuLjFjZjQ4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRC
dW5kbGVOb2RlSGFuZGxlLmNwcApAQCAtMjM1LDcgKzIzNSw4IEBAIFBhc3NSZWZQdHI8V2ViRnJh
bWU+IEluamVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6ZG9jdW1lbnRGcmFtZSgpCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVMb2FkZXJDbGllbnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsK
KyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZy
YW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIHJldHVybiB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
MDsKIH0KIAogUGFzc1JlZlB0cjxXZWJGcmFtZT4gSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlOjpo
dG1sRnJhbWVFbGVtZW50Q29udGVudEZyYW1lKCkKQEAgLTI0Nyw3ICsyNDgsOCBAQCBQYXNzUmVm
UHRyPFdlYkZyYW1lPiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGU6Omh0bWxGcmFtZUVsZW1lbnRD
b250ZW50RnJhbWUoKQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCkt
PmNsaWVudCgpKTsKKyAgICByZXR1cm4gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxv
YWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IDA7CiB9CiAKIFBhc3NSZWZQdHI8V2ViRnJhbWU+IElu
amVjdGVkQnVuZGxlTm9kZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQpA
QCAtMjU5LDcgKzI2MSw4IEBAIFBhc3NSZWZQdHI8V2ViRnJhbWU+IEluamVjdGVkQnVuZGxlTm9k
ZUhhbmRsZTo6aHRtbElGcmFtZUVsZW1lbnRDb250ZW50RnJhbWUoKQogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAg
V2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxv
YWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICByZXR1cm4gd2ViRnJh
bWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IDA7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBkN2Q0
MTEzLi43YjdiZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtMTYxLDM0ICsxNjEsMzgg
QEAgdm9pZCBJbmplY3RlZEJ1bmRsZTo6b3ZlcnJpZGVCb29sUHJlZmVyZW5jZUZvclRlc3RSdW5u
ZXIoV2ViUGFnZUdyb3VwUHJveHkqIHBhZ2UKICAgICBjb25zdCBIYXNoU2V0PFBhZ2UqPiYgcGFn
ZXMgPSBQYWdlR3JvdXA6OnBhZ2VHcm91cChwYWdlR3JvdXAtPmlkZW50aWZpZXIoKSktPnBhZ2Vz
KCk7CiAKICAgICBpZiAocHJlZmVyZW5jZSA9PSAiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VL
ZXkiKSB7Ci0gICAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6b3ZlcnJpZGVCb29sVmFsdWVGb3JL
ZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRhYnNUb0xpbmtzS2V5KCksIGVuYWJsZWQpOwotICAgICAg
IGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGkgPSBwYWdlcy5iZWdpbigpOyBpICE9IHBh
Z2VzLmVuZCgpOyArK2kpIHsKLSAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCgqaSktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+
Y2xpZW50KCkpLT53ZWJGcmFtZSgpLT5wYWdlKCk7Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zZXRU
YWJUb0xpbmtzRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6
b3ZlcnJpZGVCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnRhYnNUb0xpbmtzS2V5
KCksIGVuYWJsZWQpOworICAgICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+OjppdGVyYXRvciBpID0g
cGFnZXMuYmVnaW4oKTsgaSAhPSBwYWdlcy5lbmQoKTsgKytpKSB7CisgICAgICAgICAgICBXZWJG
cmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVy
Q2xpZW50KCgqaSktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgICAgICAg
ICAgQVNTRVJUKHdlYkZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICAgICAgICAgIHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJGcmFtZSgpLT5wYWdlKCktPnNldFRhYlRvTGlua3NFbmFibGVkKGVuYWJs
ZWQpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdDJB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQiKSB7CiAgICAgICAgIFdlYlBy
ZWZlcmVuY2VzU3RvcmU6Om92ZXJyaWRlQm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
Ojphc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRLZXkoKSwgZW5hYmxlZCk7
CiAgICAgICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGkgPSBwYWdlcy5iZWdpbigp
OyBpICE9IHBhZ2VzLmVuZCgpOyArK2kpIHsKLSAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2Ug
PSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCgqaSktPm1haW5GcmFtZSgpLT5s
b2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpLT5wYWdlKCk7Ci0gICAgICAgICAgICB3ZWJQ
YWdlLT5zZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoZW5hYmxlZCk7
CisgICAgICAgICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQg
PSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KCgqaSktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+Y2xp
ZW50KCkpOworICAgICAgICAgICAgQVNTRVJUKHdlYkZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICAg
ICAgICAgIHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpLT5wYWdlKCktPnNldEFzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZChlbmFibGVkKTsKICAgICAgICAgfQog
ICAgIH0KIAogICAgIGlmIChwcmVmZXJlbmNlID09ICJXZWJLaXQyQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyIpIHsKICAgICAgICAgV2ViUHJlZmVy
ZW5jZXNTdG9yZTo6b3ZlcnJpZGVCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnNLZXkoKSwg
ZW5hYmxlZCk7CiAgICAgICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGkgPSBwYWdl
cy5iZWdpbigpOyBpICE9IHBhZ2VzLmVuZCgpOyArK2kpIHsKLSAgICAgICAgICAgIFdlYlBhZ2Uq
IHdlYlBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCgqaSktPm1haW5G
cmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpLT5wYWdlKCk7Ci0gICAgICAg
ICAgICB3ZWJQYWdlLT5zZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRG
b3JBbGxQbHVnaW5zKGVuYWJsZWQpOworICAgICAgICAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQq
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudCgoKmkpLT5tYWlu
RnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWJGcmFt
ZUxvYWRlckNsaWVudCk7CisgICAgICAgICAgICB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJh
bWUoKS0+cGFnZSgpLT5zZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRG
b3JBbGxQbHVnaW5zKGVuYWJsZWQpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKHByZWZl
cmVuY2UgPT0gIldlYktpdDJBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJs
ZWQiKSB7CiAgICAgICAgIFdlYlByZWZlcmVuY2VzU3RvcmU6Om92ZXJyaWRlQm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5OjphcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxh
eUVuYWJsZWRLZXkoKSwgZW5hYmxlZCk7CiAgICAgICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0
ZXJhdG9yIGkgPSBwYWdlcy5iZWdpbigpOyBpICE9IHBhZ2VzLmVuZCgpOyArK2kpIHsKLSAgICAg
ICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCo+KCgqaSktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpLT5w
YWdlKCk7Ci0gICAgICAgICAgICB3ZWJQYWdlLT5zZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6
YXRpb25EZWxheUVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBXZWJGcmFtZUxvYWRlckNs
aWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KCgqaSkt
Pm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgICAgICAgICAgQVNTRVJUKHdl
YkZyYW1lTG9hZGVyQ2xpZW50KTsKKyAgICAgICAgICAgIHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53
ZWJGcmFtZSgpLT5wYWdlKCktPnNldEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5
RW5hYmxlZChlbmFibGVkKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZURPTVdpbmRv
d0V4dGVuc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCBiMzk3YTMzLi42MzRj
YmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5z
aW9uLmNwcApAQCAtNzEsOCArNzEsOSBAQCBJbmplY3RlZEJ1bmRsZURPTVdpbmRvd0V4dGVuc2lv
bjo6fkluamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uKCkKIAogV2ViRnJhbWUqIEluamVj
dGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uOjpmcmFtZSgpIGNvbnN0CiB7Ci0gICAgV2ViQ29y
ZTo6RnJhbWUqIGZyYW1lID0gbV9jb3JlRXh0ZW5zaW9uLT5mcmFtZSgpOwotICAgIHJldHVybiBm
cmFtZSA/IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKSktPndlYkZyYW1lKCkgOiAwOworICAgIEZyYW1lKiBmcmFtZSA9IG1fY29yZUV4
dGVuc2lvbi0+ZnJhbWUoKTsKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2Fk
ZXJDbGllbnQgPSBmcmFtZSA/IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKSkgOiAwOworICAgIHJldHVybiB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZy
YW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKIH0KIAogSW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZCogSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dFeHRlbnNpb246OndvcmxkKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAppbmRleCA4Yzkx
Y2I4Li5iMzliNzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0luamVjdGVkQnVuZGxlSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1
bHQuY3BwCkBAIC02NCw3ICs2NCw4IEBAIFdlYkZyYW1lKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RS
ZXN1bHQ6OmZyYW1lKCkgY29uc3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOworICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50
KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKSk7CisgICAgcmV0dXJuIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2Vi
RnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOwogfQogCiBXZWJGcmFtZSogSW5qZWN0
ZWRCdW5kbGVIaXRUZXN0UmVzdWx0Ojp0YXJnZXRGcmFtZSgpIGNvbnN0CkBAIC03Myw3ICs3NCw4
IEBAIFdlYkZyYW1lKiBJbmplY3RlZEJ1bmRsZUhpdFRlc3RSZXN1bHQ6OnRhcmdldEZyYW1lKCkg
Y29uc3QKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBz
dGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50
KCkpLT53ZWJGcmFtZSgpOworICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRl
ckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigpLT5jbGllbnQo
KSk7CisgICAgcmV0dXJuIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYkZyYW1lKCkgOiAwOwogfQogCiBTdHJpbmcgSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVz
dWx0OjphYnNvbHV0ZUltYWdlVVJMKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAK
aW5kZXggNTNjOWU1Ni4uMjAxNGM2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKQEAg
LTEwOCwxMiArMTA4LDkgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxl
TG9hZChSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIsIENhY2gKICAgICAvLyBGSVhNRTog
U29tZSBlbnRpdGllcyBpbiBXZWJDb3JlIHVzZSBXZWJDb3JlJ3MgIkVtcHR5RnJhbWVMb2FkZXJD
bGllbnQiIGluc3RlYWQgb2YgaGF2aW5nIGEgcHJvcGVyIFdlYkZyYW1lTG9hZGVyQ2xpZW50Lgog
ICAgIC8vIEVtcHR5RnJhbWVMb2FkZXJDbGllbnQgc2hvdWxkbid0IGV4aXN0IGFuZCBldmVyeXRo
aW5nIHNob3VsZCBiZSB1c2luZyBhIFdlYkZyYW1lTG9hZGVyQ2xpZW50LAogICAgIC8vIGJ1dCBp
biB0aGUgbWVhbnRpbWUgd2UgaGF2ZSB0byBtYWtlIHN1cmUgbm90IHRvIG1pcy1jYXN0LgotICAg
IFdlYkZyYW1lKiB3ZWJGcmFtZSA9IDA7Ci0gICAgV2ViUGFnZSogd2ViUGFnZSA9IDA7Ci0gICAg
aWYgKCFyZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCktPmlzRW1wdHlGcmFt
ZUxvYWRlckNsaWVudCgpKSB7Ci0gICAgICAgIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVMb2FkZXJDbGllbnQqPihyZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkp
LT53ZWJGcmFtZSgpOwotICAgICAgICB3ZWJQYWdlID0gd2ViRnJhbWUtPnBhZ2UoKTsKLSAgICB9
CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJG
cmFtZUxvYWRlckNsaWVudChyZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkp
OworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJh
bWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOworICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSB3
ZWJGcmFtZSA/IHdlYkZyYW1lLT5wYWdlKCkgOiAwOwogCiAgICAgTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMgbG9hZFBhcmFtZXRlcnM7CiAgICAgbG9hZFBhcmFtZXRlcnMuaWRlbnRpZmll
ciA9IGlkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggY2ZlOWFkYy4uYjIwZWJhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjUzLDcgKzI1Myw4
IEBAIHN0YXRpYyBpbmxpbmUgV2ViUGFnZSogd2ViUGFnZShIVE1MUGx1Z0luRWxlbWVudCogcGx1
Z2luRWxlbWVudCkKICAgICBGcmFtZSogZnJhbWUgPSBwbHVnaW5FbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CiAKLSAgICBXZWJQYWdlKiB3ZWJQYWdlID0g
c3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpKS0+d2ViRnJhbWUoKS0+cGFnZSgpOworICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJG
cmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigp
LT5jbGllbnQoKSk7CisgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCktPnBhZ2UoKSA6IDA7CiAgICAgQVNT
RVJUKHdlYlBhZ2UpOwogCiAgICAgcmV0dXJuIHdlYlBhZ2U7CkBAIC0xMTAzLDcgKzExMDQsMTAg
QEAgdm9pZCBQbHVnaW5WaWV3OjpwZXJmb3JtRnJhbWVMb2FkVVJMUmVxdWVzdChVUkxSZXF1ZXN0
KiByZXF1ZXN0KQogICAgIC8vIE5vdyBhc2sgdGhlIGZyYW1lIHRvIGxvYWQgdGhlIHJlcXVlc3Qu
CiAgICAgdGFyZ2V0RnJhbWUtPmxvYWRlcigpLT5sb2FkKEZyYW1lTG9hZFJlcXVlc3QodGFyZ2V0
RnJhbWUsIHJlcXVlc3QtPnJlcXVlc3QoKSkpOwogCi0gICAgV2ViRnJhbWUqIHRhcmdldFdlYkZy
YW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPih0YXJnZXRGcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCog
d2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KHRhcmdldEZyYW1l
LT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB0YXJnZXRXZWJGcmFtZSA9IHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAw
OworICAgIEFTU0VSVCh0YXJnZXRXZWJGcmFtZSk7CisKICAgICBpZiAoV2ViRnJhbWU6OkxvYWRM
aXN0ZW5lciogbG9hZExpc3RlbmVyID0gdGFyZ2V0V2ViRnJhbWUtPmxvYWRMaXN0ZW5lcigpKSB7
CiAgICAgICAgIC8vIENoZWNrIGlmIGFub3RoZXIgcGx1Zy1pbiB2aWV3IG9yIGV2ZW4gdGhpcyB2
aWV3IGlzIHdhaXRpbmcgZm9yIHRoZSBmcmFtZSB0byBsb2FkLgogICAgICAgICAvLyBJZiBpdCBp
cywgdGVsbCBpdCB0aGF0IHRoZSBsb2FkIHdhcyBjYW5jZWxsZWQgYmVjYXVzZSBpdCB3aWxsIGJl
IGFueXdheS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCAxODEwNjdlLi4zODdlZTMyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBAIC0xNzAsMTMgKzE3MCwxNiBAQCB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6Zm9jdXNlZE5vZGVDaGFuZ2VkKE5vZGUqIG5vZGUpCiAgICAgaWYgKCFpbnB1
dEVsZW1lbnQtPmlzVGV4dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBXZWJGcmFtZSogd2Vi
RnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJh
bWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNs
aWVudChub2RlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAg
IFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2Fk
ZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAgICAgbV9w
YWdlLT5pbmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS5kaWRGb2N1c1RleHRGaWVsZChtX3BhZ2Us
IGlucHV0RWxlbWVudCwgd2ViRnJhbWUpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6Zm9j
dXNlZEZyYW1lQ2hhbmdlZChGcmFtZSogZnJhbWUpCiB7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1l
ID0gZnJhbWUgPyBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2Fk
ZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpIDogMDsKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVu
dCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOwogCiAgICAg
V2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkZvY3VzZWRGcmFtZUNoYW5nZWQod2ViRnJhbWUgPyB3ZWJGcmFtZS0+ZnJhbWVJRCgp
IDogMCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQpAQCAtMjk4LDcgKzMwMSw5IEBAIGJvb2wgV2Vi
Q2hyb21lQ2xpZW50OjpjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKQogCiBib29sIFdl
YkNocm9tZUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSwgRnJhbWUqIGZyYW1lKQogewotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRp
Y19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSkt
PndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsK
KyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1l
TG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKKyAgICBBU1NFUlQod2ViRnJhbWUpOwogCiAg
ICAgYm9vbCBzaG91bGRDbG9zZSA9IGZhbHNlOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwobWVzc2FnZSwgd2ViRnJhbWUtPmZyYW1lSUQoKSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDo6UmVwbHkoc2hv
dWxkQ2xvc2UpLCBtX3BhZ2UtPnBhZ2VJRCgpKSkKQEAgLTMyOCw3ICszMzMsOSBAQCB2b2lkIFdl
YkNocm9tZUNsaWVudDo6Y2xvc2VXaW5kb3dTb29uKCkKIAogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OnJ1bkphdmFTY3JpcHRBbGVydChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgYWxlcnRUZXh0
KQogewotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVy
Q2xpZW50Kj4oZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2Vi
RnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRl
ckNsaWVudChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJh
bWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFt
ZSgpIDogMDsKKyAgICBBU1NFUlQod2ViRnJhbWUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5k
bGUgY2xpZW50LgogICAgIG1fcGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLndpbGxSdW5K
YXZhU2NyaXB0QWxlcnQobV9wYWdlLCBhbGVydFRleHQsIHdlYkZyYW1lKTsKQEAgLTMzOSw3ICsz
NDYsOSBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBhbGVydFRleHQpCiAKIGJvb2wgV2ViQ2hyb21lQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0Q29uZmlybShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkK
IHsKLSAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNs
aWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOworICAgIFdlYkZy
YW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJD
bGllbnQoZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgV2ViRnJhbWUqIHdlYkZyYW1l
ID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUo
KSA6IDA7CisgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxl
IGNsaWVudC4KICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlVUlDbGllbnQoKS53aWxsUnVuSmF2
YVNjcmlwdENvbmZpcm0obV9wYWdlLCBtZXNzYWdlLCB3ZWJGcmFtZSk7CkBAIC0zNTQsNyArMzYz
LDkgQEAgYm9vbCBXZWJDaHJvbWVDbGllbnQ6OnJ1bkphdmFTY3JpcHRDb25maXJtKEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6cnVu
SmF2YVNjcmlwdFByb21wdChGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYgcmVzdWx0KQogewotICAgIFdlYkZyYW1l
KiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZnJhbWUtPmxv
YWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQq
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9h
ZGVyKCktPmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRl
ckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKKyAgICBBU1NF
UlQod2ViRnJhbWUpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xpZW50LgogICAgIG1f
cGFnZS0+aW5qZWN0ZWRCdW5kbGVVSUNsaWVudCgpLndpbGxSdW5KYXZhU2NyaXB0UHJvbXB0KG1f
cGFnZSwgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCB3ZWJGcmFtZSk7CkBAIC01NTksMTQgKzU3MCwy
MCBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6c2V0VG9vbFRpcChjb25zdCBTdHJpbmcmIHRvb2xU
aXAsIFRleHREaXJlY3Rpb24pCiAKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpwcmludChGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVM
b2FkZXJDbGllbnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKKyAg
ICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1l
TG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3
ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndl
YkZyYW1lKCkgOiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKICAgICBtX3BhZ2UtPnNlbmRT
eW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlByaW50RnJhbWUod2ViRnJhbWUtPmZyYW1lSUQo
KSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlByaW50RnJhbWU6OlJlcGx5KCkpOwogfQogCiAj
aWYgRU5BQkxFKFNRTF9EQVRBQkFTRSkKIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERh
dGFiYXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgRGF0
YWJhc2VEZXRhaWxzIGRldGFpbHMpCiB7Ci0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gc3RhdGlj
X2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+
d2ViRnJhbWUoKTsKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGll
bnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOwor
ICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVM
b2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisgICAg
CiAgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpOwogCiAgICAgRGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIgPSBEYXRhYmFzZU1h
bmFnZXI6Om1hbmFnZXIoKTsKQEAgLTY1OSw3ICs2NzYsMTIgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OnJ1bk9wZW5QYW5lbChGcmFtZSogZnJhbWUsIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBy
cEZpbGUKICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGZpbGVDaG9vc2VyID0gcHJwRmlsZUNob29z
ZXI7CiAKICAgICBtX3BhZ2UtPnNldEFjdGl2ZU9wZW5QYW5lbFJlc3VsdExpc3RlbmVyKFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyOjpjcmVhdGUobV9wYWdlLCBmaWxlQ2hvb3Nlci5nZXQoKSkp
OwotICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5PcGVuUGFuZWwo
c3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmcmFtZS0+bG9hZGVyKCktPmNsaWVu
dCgpKS0+d2ViRnJhbWUoKS0+ZnJhbWVJRCgpLCBmaWxlQ2hvb3Nlci0+c2V0dGluZ3MoKSkpOwor
CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJG
cmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBXZWJGcmFt
ZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50
LT53ZWJGcmFtZSgpIDogMDsKKyAgICBBU1NFUlQod2ViRnJhbWUpOworCisgICAgbV9wYWdlLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJ1bk9wZW5QYW5lbCh3ZWJGcmFtZS0+ZnJhbWVJ
RCgpLCBmaWxlQ2hvb3Nlci0+c2V0dGluZ3MoKSkpOwogfQogCiB2b2lkIFdlYkNocm9tZUNsaWVu
dDo6bG9hZEljb25Gb3JGaWxlcyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZW5hbWVzLCBGaWxl
SWNvbkxvYWRlciogbG9hZGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQuY3BwCmluZGV4IGE4YjYyZDEu
LjZkNWRkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRWRpdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5jcHAKQEAgLTMyMCw3ICszMjAsMTAgQEAg
dm9pZCBXZWJFZGl0b3JDbGllbnQ6OnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhFbGVtZW50KiBl
bGVtZW50KQogICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9ICBzdGF0aWNfY2FzdDxXZWJGcmFt
ZUxvYWRlckNsaWVudCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5j
bGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1l
TG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChlbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkg
OiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxl
Rm9ybUNsaWVudCgpLnRleHRGaWVsZERpZEJlZ2luRWRpdGluZyhtX3BhZ2UsIHN0YXRpY19jYXN0
PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KSwgd2ViRnJhbWUpOwogfQogCkBAIC0zMjksNyAr
MzMyLDEwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RmllbGREaWRFbmRFZGl0aW5nKEVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKCFlbGVtZW50LT5oYXNUYWdOYW1lKGlucHV0VGFnKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gIHN0YXRpY19jYXN0
PFdlYkZyYW1lTG9hZGVyQ2xpZW50Kj4oZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVudCog
d2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGVsZW1lbnQtPmRv
Y3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgV2ViRnJhbWUqIHdl
YkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2Vi
RnJhbWUoKSA6IDA7CisgICAgQVNTRVJUKHdlYkZyYW1lKTsKKwogICAgIG1fcGFnZS0+aW5qZWN0
ZWRCdW5kbGVGb3JtQ2xpZW50KCkudGV4dEZpZWxkRGlkRW5kRWRpdGluZyhtX3BhZ2UsIHN0YXRp
Y19jYXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KSwgd2ViRnJhbWUpOwogfQogCkBAIC0z
NDEsNyArMzQ3LDEwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0
RmllbGQoRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIVVzZXJUeXBpbmdHZXN0dXJlSW5kaWNh
dG9yOjpwcm9jZXNzaW5nVXNlclR5cGluZ0dlc3R1cmUoKSB8fCBVc2VyVHlwaW5nR2VzdHVyZUlu
ZGljYXRvcjo6Zm9jdXNlZEVsZW1lbnRBdEdlc3R1cmVTdGFydCgpICE9IGVsZW1lbnQpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9ICBzdGF0aWNfY2FzdDxXZWJG
cmFtZUxvYWRlckNsaWVudCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigp
LT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZy
YW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChlbGVtZW50LT5kb2N1bWVu
dCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFt
ZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1l
KCkgOiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKICAgICBtX3BhZ2UtPmluamVjdGVkQnVu
ZGxlRm9ybUNsaWVudCgpLnRleHREaWRDaGFuZ2VJblRleHRGaWVsZChtX3BhZ2UsIHN0YXRpY19j
YXN0PEhUTUxJbnB1dEVsZW1lbnQqPihlbGVtZW50KSwgd2ViRnJhbWUpOwogfQogCkBAIC0zNTAs
NyArMzU5LDEwIEBAIHZvaWQgV2ViRWRpdG9yQ2xpZW50Ojp0ZXh0RGlkQ2hhbmdlSW5UZXh0QXJl
YShFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghZWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJl
YVRhZykpCiAgICAgICAgIHJldHVybjsKIAotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9ICBzdGF0
aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCktPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJD
bGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChlbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZy
YW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGll
bnQtPndlYkZyYW1lKCkgOiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKICAgICBtX3BhZ2Ut
PmluamVjdGVkQnVuZGxlRm9ybUNsaWVudCgpLnRleHREaWRDaGFuZ2VJblRleHRBcmVhKG1fcGFn
ZSwgc3RhdGljX2Nhc3Q8SFRNTFRleHRBcmVhRWxlbWVudCo+KGVsZW1lbnQpLCB3ZWJGcmFtZSk7
CiB9CiAKQEAgLTM4NSw3ICszOTcsMTAgQEAgYm9vbCBXZWJFZGl0b3JDbGllbnQ6OmRvVGV4dEZp
ZWxkQ29tbWFuZEZyb21FdmVudChFbGVtZW50KiBlbGVtZW50LCBLZXlib2FyZEV2ZW4KICAgICBp
ZiAoIWdldEFjdGlvblR5cGVGb3JLZXlFdmVudChldmVudCwgYWN0aW9uVHlwZSkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAotICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9ICBzdGF0aWNfY2FzdDxX
ZWJGcmFtZUxvYWRlckNsaWVudCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRl
cigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChlbGVtZW50LT5kb2N1
bWVudCgpLT5mcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJG
cmFtZSA9IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZy
YW1lKCkgOiAwOworICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKICAgICByZXR1cm4gbV9wYWdlLT5p
bmplY3RlZEJ1bmRsZUZvcm1DbGllbnQoKS5zaG91bGRQZXJmb3JtQWN0aW9uSW5UZXh0RmllbGQo
bV9wYWdlLCBzdGF0aWNfY2FzdDxIVE1MSW5wdXRFbGVtZW50Kj4oZWxlbWVudCksIGFjdGlvblR5
cGUsIHdlYkZyYW1lKTsKIH0KIApAQCAtMzk0LDcgKzQwOSwxMCBAQCB2b2lkIFdlYkVkaXRvckNs
aWVudDo6dGV4dFdpbGxCZURlbGV0ZWRJblRleHRGaWVsZChFbGVtZW50KiBlbGVtZW50KQogICAg
IGlmICghZWxlbWVudC0+aGFzVGFnTmFtZShpbnB1dFRhZykpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9ICBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVu
dCo+KGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSktPndl
YkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50
ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChlbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5s
b2FkZXIoKS0+Y2xpZW50KCkpOworICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkgOiAwOworICAgIEFT
U0VSVCh3ZWJGcmFtZSk7CisKICAgICBtX3BhZ2UtPmluamVjdGVkQnVuZGxlRm9ybUNsaWVudCgp
LnNob3VsZFBlcmZvcm1BY3Rpb25JblRleHRGaWVsZChtX3BhZ2UsIHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQqPihlbGVtZW50KSwgV0tJbnB1dEZpZWxkQWN0aW9uVHlwZUluc2VydERlbGV0
ZSwgd2ViRnJhbWUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4
IDFjODMzNTcuLjE5NjhkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC03MzUsNyArNzM1LDEwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2ls
bFNlbmRTdWJtaXRFdmVudChQYXNzUmVmUHRyPEZvcm1TdGF0ZT4gcHJwCiAKICAgICBSZWZQdHI8
Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBwcnBGb3JtU3RhdGU7CiAgICAgSFRNTEZvcm1FbGVtZW50
KiBmb3JtID0gZm9ybVN0YXRlLT5mb3JtKCk7Ci0gICAgV2ViRnJhbWUqIHNvdXJjZUZyYW1lID0g
c3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihmb3JtU3RhdGUtPnNvdXJjZURvY3Vt
ZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisKKyAgICBX
ZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9h
ZGVyQ2xpZW50KGZvcm1TdGF0ZS0+c291cmNlRG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCkt
PmNsaWVudCgpKTsKKyAgICBXZWJGcmFtZSogc291cmNlRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNs
aWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKKyAgICBBU1NFUlQo
c291cmNlRnJhbWUpOwogCiAgICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVGb3JtQ2xpZW50KCku
d2lsbFNlbmRTdWJtaXRFdmVudCh3ZWJQYWdlLCBmb3JtLCBtX2ZyYW1lLCBzb3VyY2VGcmFtZSwg
Zm9ybVN0YXRlLT50ZXh0RmllbGRWYWx1ZXMoKSk7CiB9CkBAIC03NTAsNyArNzUzLDExIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbFN1Ym1pdEZvcm0oRnJhbWVQb2xp
Y3lGdW5jdGlvbiBmdW5jdGlvbiwKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBw
cnBGb3JtU3RhdGU7CiAgICAgCiAgICAgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gZm9ybVN0YXRl
LT5mb3JtKCk7Ci0gICAgV2ViRnJhbWUqIHNvdXJjZUZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVMb2FkZXJDbGllbnQqPihmb3JtU3RhdGUtPnNvdXJjZURvY3VtZW50KCktPmZyYW1lKCktPmxv
YWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7CisKKyAgICBXZWJGcmFtZUxvYWRlckNsaWVu
dCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZvcm1TdGF0
ZS0+c291cmNlRG9jdW1lbnQoKS0+ZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpKTsKKyAgICBX
ZWJGcmFtZSogc291cmNlRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9h
ZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKKyAgICBBU1NFUlQoc291cmNlRnJhbWUpOworCiAg
ICAgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YWx1ZXMgPSBmb3Jt
U3RhdGUtPnRleHRGaWVsZFZhbHVlcygpOwogCiAgICAgUmVmUHRyPEFQSU9iamVjdD4gdXNlckRh
dGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKaW5kZXggYzA2NzgyNS4uYjBkY2M0ZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMjMyLDYgKzIzMiwxMiBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9mcmFtZUNhbWVGcm9tUGFnZUNhY2hlOwogfTsKIAorLy8gQXMgbG9u
ZyBhcyBFbXB0eUZyYW1lTG9hZGVyQ2xpZW50IGV4aXN0cyBpbiBXZWJDb3JlLCB0aGlzIGNhbiBy
ZXR1cm4gMC4KK2lubGluZSBXZWJGcmFtZUxvYWRlckNsaWVudCogdG9XZWJGcmFtZUxvYWRlckNs
aWVudChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBj
bGllbnQtPmlzRW1wdHlGcmFtZUxvYWRlckNsaWVudCgpID8gMCA6IHN0YXRpY19jYXN0PFdlYkZy
YW1lTG9hZGVyQ2xpZW50Kj4oY2xpZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
ICNlbmRpZiAvLyBXZWJGcmFtZUxvYWRlckNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCA3MjZjYTA2Li4yNjQ5NGU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAgLTI5
NSw3ICsyOTUsMTIgQEAgU3RyaW5nIFdlYkZyYW1lOjpjb250ZW50c0FzU3RyaW5nKCkgY29uc3QK
ICAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2NvcmVGcmFtZS0+dHJlZSgpLT5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKICAg
ICAgICAgICAgIGlmICghYnVpbGRlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgYnVpbGRl
ci5hcHBlbmQoJyAnKTsKLSAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFdl
YkZyYW1lTG9hZGVyQ2xpZW50Kj4oY2hpbGQtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1l
KCktPmNvbnRlbnRzQXNTdHJpbmcoKSk7CisKKyAgICAgICAgICAgIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoY2hpbGQt
PmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgICAgICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3
ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDog
MDsKKyAgICAgICAgICAgIEFTU0VSVCh3ZWJGcmFtZSk7CisKKyAgICAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKHdlYkZyYW1lLT5jb250ZW50c0FzU3RyaW5nKCkpOwogICAgICAgICB9CiAgICAgICAg
IC8vIEZJWE1FOiBJdCBtYXkgbWFrZSBzZW5zZSB0byB1c2UgdG9TdHJpbmdQcmVzZXJ2ZUNhcGFj
aXR5KCkgaGVyZS4KICAgICAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKQEAgLTM5NCw3
ICszOTksOCBAQCBXZWJGcmFtZSogV2ViRnJhbWU6OnBhcmVudEZyYW1lKCkgY29uc3QKICAgICBp
ZiAoIW1fY29yZUZyYW1lIHx8ICFtX2NvcmVGcmFtZS0+b3duZXJFbGVtZW50KCkgfHwgIW1fY29y
ZUZyYW1lLT5vd25lckVsZW1lbnQoKS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViRnJhbWVMb2FkZXJDbGllbnQqPihtX2NvcmVGcmFt
ZS0+b3duZXJFbGVtZW50KCktPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQo
KSktPndlYkZyYW1lKCk7CisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVy
Q2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChtX2NvcmVGcmFtZS0+b3duZXJFbGVtZW50
KCktPmRvY3VtZW50KCktPmZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgcmV0dXJu
IHdlYkZyYW1lTG9hZGVyQ2xpZW50ID8gd2ViRnJhbWVMb2FkZXJDbGllbnQtPndlYkZyYW1lKCkg
OiAwOwogfQogCiBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJGcmFtZTo6Y2hpbGRGcmFt
ZXMoKQpAQCAtNDEwLDcgKzQxNiw5IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkZy
YW1lOjpjaGlsZEZyYW1lcygpCiAgICAgdmVjdG9yLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoc2l6
ZSk7CiAKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fY29yZUZyYW1lLT50cmVlKCktPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkgewot
ICAgICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNs
aWVudCo+KGNoaWxkLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpOworICAgICAgICBX
ZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQgPSB0b1dlYkZyYW1lTG9h
ZGVyQ2xpZW50KGNoaWxkLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgICAgICBXZWJGcmFtZSog
d2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53
ZWJGcmFtZSgpIDogMDsKKyAgICAgICAgQVNTRVJUKHdlYkZyYW1lKTsKICAgICAgICAgdmVjdG9y
LnVuY2hlY2tlZEFwcGVuZCh3ZWJGcmFtZSk7CiAgICAgfQogCkBAIC02MTMsNyArNjIxLDkgQEAg
V2ViRnJhbWUqIFdlYkZyYW1lOjpmcmFtZUZvckNvbnRleHQoSlNDb250ZXh0UmVmIGNvbnRleHQp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IHN0YXRpY19jYXN0
PEpTRE9NV2luZG93U2hlbGwqPihnbG9iYWxPYmplY3RPYmopLT53aW5kb3coKS0+aW1wbCgpLT5m
cmFtZSgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGNv
cmVGcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKS0+d2ViRnJhbWUoKTsKKworICAgIFdlYkZyYW1l
TG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGll
bnQoY29yZUZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpOworICAgIHJldHVybiB3ZWJGcmFtZUxv
YWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKIH0KIAog
SlNWYWx1ZVJlZiBXZWJGcmFtZTo6anNXcmFwcGVyRm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVOb2Rl
SGFuZGxlKiBub2RlSGFuZGxlLCBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZCkKQEAg
LTczNiw4ICs3NDYsMTEgQEAgYm9vbCBXZWJGcmFtZUZpbHRlcjo6c2hvdWxkSW5jbHVkZVN1YmZy
YW1lKEZyYW1lKiBmcmFtZSkgY29uc3QKIHsKICAgICBpZiAoIW1fY2FsbGJhY2spCiAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICAKLSAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBzdGF0aWNf
Y2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53
ZWJGcmFtZSgpOworCisgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xp
ZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZS0+bG9hZGVyKCktPmNsaWVudCgpKTsK
KyAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1l
TG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogMDsKKyAgICBBU1NFUlQod2ViRnJhbWUpOworCiAg
ICAgcmV0dXJuIG1fY2FsbGJhY2sodG9BUEkobV90b3BMZXZlbFdlYkZyYW1lKSwgdG9BUEkod2Vi
RnJhbWUpLCBtX2NvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggOWJjMzY3Yy4uM2NhNTg2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMjk0NSw4ICsyOTQ1LDEx
IEBAIHZvaWQgV2ViUGFnZTo6Y2xlYXJTZWxlY3Rpb24oKQogCiBib29sIFdlYlBhZ2U6Om1haW5G
cmFtZUhhc0N1c3RvbVJlcHJlc2VudGF0aW9uKCkgY29uc3QKIHsKLSAgICBpZiAoRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJGcmFtZUxv
YWRlckNsaWVudCo+KGZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCkpLT5mcmFtZUhhc0N1c3RvbVJl
cHJlc2VudGF0aW9uKCk7CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1haW5GcmFtZSgpKSB7Cisg
ICAgICAgIFdlYkZyYW1lTG9hZGVyQ2xpZW50KiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2Vi
RnJhbWVMb2FkZXJDbGllbnQoZnJhbWUtPmxvYWRlcigpLT5jbGllbnQoKSk7CisgICAgICAgIEFT
U0VSVCh3ZWJGcmFtZUxvYWRlckNsaWVudCk7CisgICAgICAgIHJldHVybiB3ZWJGcmFtZUxvYWRl
ckNsaWVudC0+ZnJhbWVIYXNDdXN0b21SZXByZXNlbnRhdGlvbigpOworICAgIH0KIAogICAgIHJl
dHVybiBmYWxzZTsKIH0K
</data>
<flag name="review"
          id="223421"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>