<?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>138212</bug_id>
          
          <creation_ts>2014-10-30 08:51:57 -0700</creation_ts>
          <short_desc>[WK2] Send origin &amp; deletion requests to WebProcessess in additon to the DatabaseProcess.</short_desc>
          <delta_ts>2014-10-31 16:07:04 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1045032</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-30 08:51:57 -0700</bug_when>
    <thetext>[WK2] Send origin &amp; deletion requests to WebProcessess in additon to the DatabaseProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045034</commentid>
    <comment_count>1</comment_count>
      <attachid>240674</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-30 09:08:15 -0700</bug_when>
    <thetext>Created attachment 240674
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045036</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-30 09:10:04 -0700</bug_when>
    <thetext>Attachment 240674 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:126:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:136:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:140:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:194:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:235:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:278:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 6 in 3 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>1045037</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-10-30 09:10:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/18824931&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045175</commentid>
    <comment_count>4</comment_count>
      <attachid>240674</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-10-30 16:46:11 -0700</bug_when>
    <thetext>Comment on attachment 240674
Patch

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

I think the naming needs work.  It&apos;s hard to &quot;read the code&quot; when the naming is as weird as it is.

&gt; Source/WebKit2/ChangeLog:14
&gt; +        Add a simple class, GroupSynchronizer, which will keep track of outstanding process callbacks
&gt; +        and which will trigger the final callback once all of them finish.

I don&apos;t think GroupSynchronizer is a good name.

If I didn&apos;t read this comment and was asked what I think &quot;GroupSynchronizer&quot; does, I wouldn&apos;t have a clue.

&gt; Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:108
&gt; +    void escalateError(const CallbackBase::Error&amp; error)

Not a fan of the naming &quot;escalateError&quot;.  Not sure what that&apos;s supposed to mean.  Especially when sometimes the error is &quot;not an error&quot;, and especially when it is always called.

&gt; Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:121
&gt; +    std::atomic&lt;unsigned&gt; m_count;

Are we expecting calls to be from multiple threads?

Is there a good reason to allow them to be?

Unless there&apos;s a good reason, I&apos;d rather we protect against it instead of explicitly allow it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045293</commentid>
    <comment_count>5</comment_count>
      <attachid>240741</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-31 10:27:06 -0700</bug_when>
    <thetext>Created attachment 240741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045295</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-31 10:28:30 -0700</bug_when>
    <thetext>Attachment 240741 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:125:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:135:  Missing space before {  [whitespace/braces] [5]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:139:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:194:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:236:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:280:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 6 in 3 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>1045304</commentid>
    <comment_count>7</comment_count>
      <attachid>240741</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-10-31 11:03:28 -0700</bug_when>
    <thetext>Comment on attachment 240741
Patch

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

&gt; Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:137
&gt; +    RefPtr&lt;CallbackSynchronizer&gt; synchronizer = CallbackSynchronizer::create();
&gt; +
&gt; +    synchronizer-&gt;setCallback([finalOrigins, callbackFunction](const CallbackBase::Error&amp; error){
&gt; +        callbackFunction(finalOrigins.get(), error);
&gt; +    });

Can&apos;t the CallbackSynchronizer just take the callback in its creator?  It should be invalid to create one without a callback.

&gt; Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:192
&gt; +    RefPtr&lt;CallbackSynchronizer&gt; synchronizer = CallbackSynchronizer::create();
&gt;  
&gt; -    if (!context()) {
&gt; -        callback-&gt;invalidate();
&gt; -        return;
&gt; -    }
&gt; +    synchronizer-&gt;setCallback([callbackFunction](const CallbackBase::Error&amp; error) {
&gt; +        callbackFunction(error);
&gt; +    });

Can&apos;t the CallbackSynchronizer just take the callback in its creator?  It should be invalid to create one without a callback.

&gt; Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:234
&gt; +    RefPtr&lt;CallbackSynchronizer&gt; synchronizer = CallbackSynchronizer::create();
&gt;  
&gt; -    if (!context()) {
&gt; -        callback-&gt;invalidate();
&gt; -        return;
&gt; -    }
&gt; +    synchronizer-&gt;setCallback([callbackFunction](const CallbackBase::Error&amp; error) {
&gt; +        callbackFunction(error);
&gt; +    });

Can&apos;t the CallbackSynchronizer just take the callback in its creator?  It should be invalid to create one without a callback.

&gt; Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:278
&gt; +    RefPtr&lt;CallbackSynchronizer&gt; synchronizer = CallbackSynchronizer::create();
&gt;  
&gt; -    if (!context()) {
&gt; -        callback-&gt;invalidate();
&gt; -        return;
&gt; -    }
&gt; +    synchronizer-&gt;setCallback([callbackFunction](const CallbackBase::Error&amp; error) {
&gt; +        callbackFunction(error);
&gt; +    });

Can&apos;t the CallbackSynchronizer just take the callback in its creator?  It should be invalid to create one without a callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045382</commentid>
    <comment_count>8</comment_count>
      <attachid>240756</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-31 14:36:59 -0700</bug_when>
    <thetext>Created attachment 240756
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045383</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-31 14:39:31 -0700</bug_when>
    <thetext>Attachment 240756 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:135:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:149:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/WebOriginDataManagerProxy.cpp:190:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 3 in 3 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>1045411</commentid>
    <comment_count>10</comment_count>
      <attachid>240756</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2014-10-31 15:43:16 -0700</bug_when>
    <thetext>Comment on attachment 240756
Patch

Why are the bots orange?  that&apos;s bad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045419</commentid>
    <comment_count>11</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-31 16:03:55 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Comment on attachment 240756 [details]
&gt; Patch
&gt; 
&gt; Why are the bots orange?  that&apos;s bad.

GTK: ninja: error: &apos;../../Source/WebKit2/NetworkProcess/cocoa/NetworkCacheStorage.h&apos;, needed by &apos;WebKit2-forwarding-headers.stamp&apos;, missing and no known rule to make it

Seems unrelated.

mac-wk2: flakey transitions/ tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1045420</commentid>
    <comment_count>12</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2014-10-31 16:07:04 -0700</bug_when>
    <thetext>Committed r175430: &lt;http://trac.webkit.org/changeset/175430&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240674</attachid>
            <date>2014-10-30 09:08:15 -0700</date>
            <delta_ts>2014-10-31 10:27:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138212-20141030090823.patch</filename>
            <type>text/plain</type>
            <size>15695</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTRkY2UyMGRlZGZkM2Vk
Mjc3YWZkZDIzZmRiMjdlMGY1YjFlZGU2NS4uODJlYTgwZWViY2U2OTYzYmJlZDAxYmRkZTM1Mjk5
OGQ5ODJhMjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE0LTEwLTMwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFtXSzJdIFNlbmQgb3JpZ2lu
ICYgZGVsZXRpb24gcmVxdWVzdHMgdG8gV2ViUHJvY2Vzc2VzcyBpbiBhZGRpdG9uIHRvIHRoZSBE
YXRhYmFzZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb3cgdGhhdCB0aGUgV2ViUHJvY2VzcyBoYXMgaXRzIG93biBXZWJPcmlnaW5EYXRh
TWFuYWdlciwgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSBuZWVkcyB0bworICAgICAgICBzZW5k
IGl0cyBvcmlnaW4gYW5kIGRlbGV0aW9uIG1lc3NhZ2VzIHRvIGFsbCB0aGUgV2ViUHJvY2Vzc2Vz
LiBUaGlzIG5lY2Vzc2V0YXRlcyBzeW5jaHJvbml6aW5nCisgICAgICAgIGFsbCB0aGUgdmFyaW91
cyBwcm9jZXNzJ3MgY2FsbGJhY2tzIHNvIHRoYXQgdGhlIGZpbmFsIGNhbGxiYWNrIGlzIG9ubHkg
dHJpZ2dlcmVkIG9uY2UgYWxsIHRoZQorICAgICAgICBtZXNzYWdlZCBwcm9jZXNzZXMgcmVwbHku
CisKKyAgICAgICAgQWRkIGEgc2ltcGxlIGNsYXNzLCBHcm91cFN5bmNocm9uaXplciwgd2hpY2gg
d2lsbCBrZWVwIHRyYWNrIG9mIG91dHN0YW5kaW5nIHByb2Nlc3MgY2FsbGJhY2tzCisgICAgICAg
IGFuZCB3aGljaCB3aWxsIHRyaWdnZXIgdGhlIGZpbmFsIGNhbGxiYWNrIG9uY2UgYWxsIG9mIHRo
ZW0gZmluaXNoLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpHcm91cFN5bmNocm9uaXplcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6R3JvdXBTeW5jaHJvbml6ZXI6OmVudGVyKToKKyAgICAgICAgKFdlYktp
dDo6R3JvdXBTeW5jaHJvbml6ZXI6OmxlYXZlKToKKyAgICAgICAgKFdlYktpdDo6R3JvdXBTeW5j
aHJvbml6ZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6R3JvdXBTeW5jaHJvbml6
ZXI6OmVzY2FsYXRlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpHcm91cFN5bmNocm9uaXplcjo6
R3JvdXBTeW5jaHJvbml6ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdl
clByb3h5OjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFn
ZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyk6
CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbEVu
dHJpZXMpOgorCisgICAgICAgIERyaXZlLWJ5IGZpeDogY2hlY2sgdGhlIGNvcnJlY3QgZW51bSB2
YWx1ZSBmb3IgV2ViTWVkaWEgb3JpZ2luIHJlcXVlc3RzLgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Z2V0T3JpZ2lu
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3
ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpkZWxldGVBbGxFbnRyaWVz
KToKKwogMjAxNC0xMC0yOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbRU1FXSBBZGQgQ2hyb21lQ2xpZW50IG1ldGhvZCBmb3IgYWNjZXNzaW5nIHN0b3JhZ2Ug
bG9jYXRpb24gZm9yIE1lZGlhS2V5cyBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKaW5kZXggZTBjNmYwMWMyMzlm
YzZjYmU4M2FlOWEyNjAwMDUwZTY2MjYwZmM5Mi4uMTg4ZjRhZDZmZGIzMGUyYjA5NTkzMjQ4YjQ2
ZDU4MTI0MDFiOGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9y
aWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcApAQCAtODQsMjcgKzg0LDg0IEBAIHZvaWQgV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiAgICAg
QVBJOjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLXZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eTo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lk
IChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCi17
Ci0gICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB3ZSBvbmx5IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNl
IGRhdGEgc28gd2Uga25vdyB0aGF0IHdlJ3JlIG9ubHkgc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8g
dGhlIERhdGFiYXNlUHJvY2Vzcy4KLSAgICAvLyBUaGF0J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xl
IGNhbGxiYWNrIHdvcmtzLgotICAgIC8vIEluIHRoZSBmdXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4t
cHJvY2Vzc2VzIHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3IgYWxsIE4gcmVwbGllcyBiZWZvcmUgcmVz
cG9uZGluZyB0byB0aGUgY2xpZW50LgotICAgIGlmICghKHR5cGVzICYga1dLSW5kZXhlZERhdGFi
YXNlRGF0YSkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jh
c2U6OkVycm9yOjpOb25lKTsKLSAgICAgICAgcmV0dXJuOworY2xhc3MgR3JvdXBTeW5jaHJvbml6
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHcm91cFN5bmNocm9uaXplcj4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEdyb3VwU3luY2hyb25pemVyPiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgR3JvdXBTeW5jaHJvbml6ZXIoKSk7IH0KKworICAgIHZvaWQgZW50ZXIoKQor
ICAgIHsKKyAgICAgICAgKyttX2NvdW50OworICAgIH0KKworICAgIHZvaWQgbGVhdmUoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUKG1fY291bnQpOworICAgICAgICBpZiAoIS0tbV9jb3VudCkKKyAg
ICAgICAgICAgIG1fY2FsbGJhY2sobV9lcnJvcik7CisgICAgfQorCisgICAgdm9pZCBzZXRDYWxs
YmFjayhjb25zdCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgQ2FsbGJhY2tCYXNlOjpFcnJvciYp
PiYgY2FsbGJhY2spCisgICAgeworICAgICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAg
fQorCisgICAgdm9pZCBlc2NhbGF0ZUVycm9yKGNvbnN0IENhbGxiYWNrQmFzZTo6RXJyb3ImIGVy
cm9yKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5v
bmUpCisgICAgICAgICAgICBtX2Vycm9yID0gZXJyb3I7CiAgICAgfQogCi0gICAgUmVmUHRyPEFy
cmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKFdURjo6bW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7Citwcm90ZWN0ZWQ6CisgICAgR3JvdXBTeW5jaHJvbml6ZXIoKQor
ICAgICAgICA6IG1fY291bnQoMCkKKyAgICAgICAgLCBtX2Vycm9yKENhbGxiYWNrQmFzZTo6RXJy
b3I6Ok5vbmUpCisgICAgeworICAgIH0KKworICAgIHN0ZDo6YXRvbWljPHVuc2lnbmVkPiBtX2Nv
dW50OworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBDYWxsYmFja0Jhc2U6OkVycm9yJik+
IG1fY2FsbGJhY2s7CisgICAgQ2FsbGJhY2tCYXNlOjpFcnJvciBtX2Vycm9yOworfTsKIAordm9p
ZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVz
IHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKEFQSTo6QXJyYXkqLCBDYWxsYmFja0Jhc2U6OkVy
cm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKK3sKICAgICBpZiAoIWNvbnRleHQoKSkgewotICAgICAg
ICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKG51bGxw
dHIsIENhbGxiYWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0g
ICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsK
KyAgICBSZWZQdHI8QVBJOjpBcnJheT4gZmluYWxPcmlnaW5zID0gQVBJOjpBcnJheTo6Y3JlYXRl
KCk7CisgICAgUmVmUHRyPEdyb3VwU3luY2hyb25pemVyPiBzeW5jaHJvbml6ZXIgPSBHcm91cFN5
bmNocm9uaXplcjo6Y3JlYXRlKCk7CisKKyAgICBzeW5jaHJvbml6ZXItPnNldENhbGxiYWNrKFtm
aW5hbE9yaWdpbnMsIGNhbGxiYWNrRnVuY3Rpb25dKGNvbnN0IENhbGxiYWNrQmFzZTo6RXJyb3Im
IGVycm9yKXsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihmaW5hbE9yaWdpbnMuZ2V0KCksIGVy
cm9yKTsKKyAgICB9KTsKKworICAgIGF1dG8gcGVyUHJvY2Vzc0NhbGxiYWNrID0gW2ZpbmFsT3Jp
Z2lucywgc3luY2hyb25pemVyXShBUEk6OkFycmF5KiBvcmlnaW5zLCBDYWxsYmFja0Jhc2U6OkVy
cm9yIGVycm9yKSB7CisgICAgICAgIGlmIChvcmlnaW5zKQorICAgICAgICAgICAgZmluYWxPcmln
aW5zLT5lbGVtZW50cygpLmFwcGVuZFZlY3RvcihvcmlnaW5zLT5lbGVtZW50cygpKTsKKyAgICAg
ICAgc3luY2hyb25pemVyLT5lc2NhbGF0ZUVycm9yKGVycm9yKTsKKyAgICAgICAgc3luY2hyb25p
emVyLT5sZWF2ZSgpOworICAgIH07CisKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBjb250ZXh0
KCktPnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghcHJvY2VzcyB8fCAhcHJvY2Vzcy0+Y2Fu
U2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHN5bmNocm9u
aXplci0+ZW50ZXIoKTsKKyAgICAgICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0g
QXJyYXlDYWxsYmFjazo6Y3JlYXRlKHBlclByb2Nlc3NDYWxsYmFjayk7CisgICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAgICBtX2FycmF5
Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgICAgICBw
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6R2V0T3JpZ2lucyh0
eXBlcywgY2FsbGJhY2tJRCksIDApOworICAgIH0KIAotICAgIGNvbnRleHQoKS0+c2VuZFRvRGF0
YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0
YU1hbmFnZXI6OkdldE9yaWdpbnModHlwZXMsIGNhbGxiYWNrSUQpKTsKKyAgICB7CisgICAgICAg
IHN5bmNocm9uaXplci0+ZW50ZXIoKTsKKyAgICAgICAgUmVmUHRyPEFycmF5Q2FsbGJhY2s+IGNh
bGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKHBlclByb2Nlc3NDYWxsYmFjayk7CisgICAg
ICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAg
ICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwor
ICAgICAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNl
c3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpHZXRPcmlnaW5zKHR5cGVzLCBj
YWxsYmFja0lEKSk7CisgICAgfQogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6
OmRpZEdldE9yaWdpbnMoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdCBWZWN0b3I8
U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2luSWRlbnRpZmllcnMsIHVpbnQ2NF90IGNhbGxiYWNr
SUQpCkBAIC0xMjMsNTMgKzE4MCw3OSBAQCB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6
OmRpZEdldE9yaWdpbnMoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBjb25zdAogCiB2b2lk
IFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmln
aW5EYXRhVHlwZXMgdHlwZXMsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAg
Ly8gRklYTUU6IFJpZ2h0IG5vdyB3ZSBvbmx5IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNlIGRhdGEg
c28gd2Uga25vdyB0aGF0IHdlJ3JlIG9ubHkgc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8gdGhlIERh
dGFiYXNlUHJvY2Vzcy4KLSAgICAvLyBUaGF0J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xlIGNhbGxi
YWNrIHdvcmtzLgotICAgIC8vIEluIHRoZSBmdXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4tcHJvY2Vz
c2VzIHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3IgYWxsIE4gcmVwbGllcyBiZWZvcmUgcmVzcG9uZGlu
ZyB0byB0aGUgY2xpZW50LgotICAgIGlmICghKHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNlRGF0
YSkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25l
KTsKKyAgICBpZiAoIWNvbnRleHQoKSkgeworICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxi
YWNrQmFzZTo6RXJyb3I6OlVua25vd24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
UmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShXVEY6
Om1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOworICAgIFJlZlB0cjxHcm91cFN5bmNocm9uaXplcj4g
c3luY2hyb25pemVyID0gR3JvdXBTeW5jaHJvbml6ZXI6OmNyZWF0ZSgpOwogCi0gICAgaWYgKCFj
b250ZXh0KCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KKyAgICBzeW5jaHJvbml6ZXItPnNldENhbGxiYWNrKFtjYWxsYmFja0Z1bmN0
aW9uXShjb25zdCBDYWxsYmFja0Jhc2U6OkVycm9yJiBlcnJvcikgeworICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKGVycm9yKTsKKyAgICB9KTsKIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBj
YWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJ
RCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICBhdXRvIHBlclByb2Nlc3NDYWxsYmFjayA9IFtz
eW5jaHJvbml6ZXJdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgc3luY2hy
b25pemVyLT5lc2NhbGF0ZUVycm9yKGVycm9yKTsKKyAgICAgICAgc3luY2hyb25pemVyLT5sZWF2
ZSgpOworICAgIH07CiAKICAgICBTZWN1cml0eU9yaWdpbkRhdGEgc2VjdXJpdHlPcmlnaW5EYXRh
OwogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wcm90b2NvbCA9IG9yaWdpbi0+c2VjdXJpdHlPcmln
aW4oKS5wcm90b2NvbCgpOwogICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5ob3N0ID0gb3JpZ2luLT5z
ZWN1cml0eU9yaWdpbigpLmhvc3QoKTsKICAgICBzZWN1cml0eU9yaWdpbkRhdGEucG9ydCA9IG9y
aWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCk7CiAKLSAgICBjb250ZXh0KCktPnNlbmRUb0Rh
dGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRh
dGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzRm9yT3JpZ2luKHR5cGVzLCBzZWN1cml0eU9yaWdpbkRh
dGEsIGNhbGxiYWNrSUQpKTsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBjb250ZXh0KCktPnBy
b2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghcHJvY2VzcyB8fCAhcHJvY2Vzcy0+Y2FuU2VuZE1l
c3NhZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlZlB0cjxWb2lkQ2Fs
bGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUocGVyUHJvY2Vzc0NhbGxiYWNr
KTsKKyAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7
CisgICAgICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFz
ZSgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFn
ZXI6OkRlbGV0ZUVudHJpZXNGb3JPcmlnaW4odHlwZXMsIHNlY3VyaXR5T3JpZ2luRGF0YSwgY2Fs
bGJhY2tJRCksIDApOworICAgIH0KKworICAgIHsKKyAgICAgICAgUmVmUHRyPFZvaWRDYWxsYmFj
az4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShwZXJQcm9jZXNzQ2FsbGJhY2spOwor
ICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAg
ICAgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkp
OworICAgICAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZO
ZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzRm9y
T3JpZ2luKHR5cGVzLCBzZWN1cml0eU9yaWdpbkRhdGEsIGNhbGxiYWNrSUQpKTsKKyAgICB9CiB9
CiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc01vZGlmaWVk
QmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBkb3VibGUgc3RhcnREYXRlLCBk
b3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIG9ubHkgc3Vw
cG9ydCBJbmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRoYXQgd2UncmUgb25seSBzZW5k
aW5nIHRoaXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNzLgotICAgIC8vIFRoYXQncyB3
aHkgaGF2aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCi0gICAgLy8gSW4gdGhlIGZ1dHVy
ZSB3aGVuIHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2ZSB0byB3YWl0IGZvciBhbGwg
TiByZXBsaWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGllbnQuCi0gICAgaWYgKCEodHlw
ZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgIGlmICghY29udGV4dCgpKSB7CisgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9
IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAg
UmVmUHRyPEdyb3VwU3luY2hyb25pemVyPiBzeW5jaHJvbml6ZXIgPSBHcm91cFN5bmNocm9uaXpl
cjo6Y3JlYXRlKCk7CiAKLSAgICBpZiAoIWNvbnRleHQoKSkgewotICAgICAgICBjYWxsYmFjay0+
aW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHN5bmNocm9uaXplci0+
c2V0Q2FsbGJhY2soW2NhbGxiYWNrRnVuY3Rpb25dKGNvbnN0IENhbGxiYWNrQmFzZTo6RXJyb3Im
IGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oZXJyb3IpOworICAgIH0pOworCisg
ICAgYXV0byBwZXJQcm9jZXNzQ2FsbGJhY2sgPSBbc3luY2hyb25pemVyXShDYWxsYmFja0Jhc2U6
OkVycm9yIGVycm9yKSB7CisgICAgICAgIHN5bmNocm9uaXplci0+ZXNjYWxhdGVFcnJvcihlcnJv
cik7CisgICAgICAgIHN5bmNocm9uaXplci0+bGVhdmUoKTsKKyAgICB9OworCisgICAgZm9yIChh
dXRvJiBwcm9jZXNzIDogY29udGV4dCgpLT5wcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAoIXBy
b2Nlc3MgfHwgIXByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkpCisgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwot
ICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsK
KyAgICAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNy
ZWF0ZShwZXJQcm9jZXNzQ2FsbGJhY2spOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxs
YmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3Nh
Z2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRh
dGVzKHR5cGVzLCBzdGFydERhdGUsIGVuZERhdGUsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICB9CiAK
LSAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzTW9kaWZpZWRC
ZXR3ZWVuRGF0ZXModHlwZXMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsbGJhY2tJRCkpOworICAg
IHsKKyAgICAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6
OmNyZWF0ZShwZXJQcm9jZXNzQ2FsbGJhY2spOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lE
ID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAgbV92b2lkQ2FsbGJhY2tzLnNldChj
YWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgICAgICBjb250ZXh0KCktPnNlbmRU
b0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdp
bkRhdGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXModHlwZXMsIHN0
YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsbGJhY2tJRCkpOworICAgIH0KIH0KIAogdm9pZCBXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxldGVFbnRyaWVzKElQQzo6Q29ubmVjdGlvbiogY29u
bmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKQEAgLTE4MSwyNSArMjY0LDM4IEBAIHZvaWQg
V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlRW50cmllcyhJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIHVpCiAKIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsRW50cmllcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lk
IChDYWxsYmFja0Jhc2U6OkVycm9yKT4gY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICAvLyBGSVhN
RTogUmlnaHQgbm93IHdlIG9ubHkgc3VwcG9ydCBJbmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBr
bm93IHRoYXQgd2UncmUgb25seSBzZW5kaW5nIHRoaXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQ
cm9jZXNzLgotICAgIC8vIFRoYXQncyB3aHkgaGF2aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29y
a3MuCi0gICAgLy8gSW4gdGhlIGZ1dHVyZSB3aGVuIHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2Un
bGwgaGF2ZSB0byB3YWl0IGZvciBhbGwgTiByZXBsaWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRo
ZSBjbGllbnQuCi0gICAgaWYgKCEodHlwZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSkgewot
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAg
IGlmICghY29udGV4dCgpKSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNl
OjpFcnJvcjo6VW5rbm93bik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8
Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURjo6bW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CisgICAgUmVmUHRyPEdyb3VwU3luY2hyb25pemVyPiBzeW5jaHJv
bml6ZXIgPSBHcm91cFN5bmNocm9uaXplcjo6Y3JlYXRlKCk7CiAKLSAgICBpZiAoIWNvbnRleHQo
KSkgewotICAgICAgICBjYWxsYmFjay0+aW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQorICAgIHN5bmNocm9uaXplci0+c2V0Q2FsbGJhY2soW2NhbGxiYWNrRnVuY3Rpb25dKGNv
bnN0IENhbGxiYWNrQmFzZTo6RXJyb3ImIGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rp
b24oZXJyb3IpOworICAgIH0pOworCisgICAgYXV0byBwZXJQcm9jZXNzQ2FsbGJhY2sgPSBbc3lu
Y2hyb25pemVyXShDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIHN5bmNocm9u
aXplci0+ZXNjYWxhdGVFcnJvcihlcnJvcik7CisgICAgICAgIHN5bmNocm9uaXplci0+bGVhdmUo
KTsKKyAgICB9OwogCi0gICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7Ci0gICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxl
YXNlKCkpOworICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IGNvbnRleHQoKS0+cHJvY2Vzc2VzKCkp
IHsKKyAgICAgICAgaWYgKCFwcm9jZXNzIHx8ICFwcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQor
ICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJv
Y2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2Vy
OjpEZWxldGVBbGxFbnRyaWVzKHR5cGVzLCBjYWxsYmFja0lEKSk7CisgICAgICAgIFJlZlB0cjxW
b2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUocGVyUHJvY2Vzc0Nh
bGxiYWNrKTsKKyAgICAgICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFj
a0lEKCk7CisgICAgICAgIG1fdm9pZENhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2su
cmVsZWFzZSgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViT3JpZ2luRGF0
YU1hbmFnZXI6OkRlbGV0ZUFsbEVudHJpZXModHlwZXMsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENh
bGxiYWNrOjpjcmVhdGUocGVyUHJvY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgdWludDY0X3QgY2Fs
bGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgIG1fdm9pZENhbGxiYWNr
cy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAgY29udGV4dCgp
LT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpX
ZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlQWxsRW50cmllcyh0eXBlcywgY2FsbGJhY2tJRCkp
OworICAgIH0KIH0KIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxldGVB
bGxFbnRyaWVzKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDBhNjVmZGUw
ZmYxZjE3MDMwYTQyNTgxMzc1MTgzNjMwNTI4Mjc4NWYuLmM4ZDFkYmNmNmUyNDdlYTVlNmE2ZTM2
ZjE5MDIxZThlZTc0MzFjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcApAQCAtMTI1NCw3ICsxMjU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2Vy
dmljZXMoYm9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYKIAogdm9p
ZCBXZWJQcm9jZXNzOjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlv
bikKIHsKLSAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkpIHsK
KyAgICBpZiAoISh0eXBlcyAmIGtXS01lZGlhS2V5U3RvcmFnZU9yaWdpbkRhdGEpKSB7CiAgICAg
ICAgIGNvbXBsZXRpb24oVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4oKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldE9y
aWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBW
ZQogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRh
VHlwZXMgdHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQoKT4gY29tcGxldGlvbikKIHsKLSAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERh
dGFiYXNlT3JpZ2luRGF0YSkpIHsKKyAgICBpZiAoISh0eXBlcyAmIGtXS01lZGlhS2V5U3RvcmFn
ZU9yaWdpbkRhdGEpKSB7CiAgICAgICAgIGNvbXBsZXRpb24oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEyODcsNyArMTI4Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlRW50cmll
c0Zvck9yaWdpbihXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgY29uc3QgU2VjdXJpdHlPCiAKIHZv
aWQgV2ViUHJvY2Vzczo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2lu
RGF0YVR5cGVzIHR5cGVzLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpm
dW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24pCiB7Ci0gICAgaWYgKCEodHlwZXMgJiBrV0tXZWJT
UUxEYXRhYmFzZU9yaWdpbkRhdGEpKSB7CisgICAgaWYgKCEodHlwZXMgJiBrV0tNZWRpYUtleVN0
b3JhZ2VPcmlnaW5EYXRhKSkgewogICAgICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVu
dHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgZG91Ygog
CiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlw
ZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKQogewotICAgIGlmICghKHR5cGVz
ICYga1dLV2ViU1FMRGF0YWJhc2VPcmlnaW5EYXRhKSkgeworICAgIGlmICghKHR5cGVzICYga1dL
TWVkaWFLZXlTdG9yYWdlT3JpZ2luRGF0YSkpIHsKICAgICAgICAgY29tcGxldGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240741</attachid>
            <date>2014-10-31 10:27:06 -0700</date>
            <delta_ts>2014-10-31 14:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138212-20141031102715.patch</filename>
            <type>text/plain</type>
            <size>15957</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDA4YTAyMDc1NmZlMTQ1
OGE3MTRjYTcxYjZhNGY1MDc2ZGZiN2EzNi4uZjNmYjY4YTgxMzdjNmM2OWIwN2I1MmEzNzE0NzJi
YjdhMzAyZmU0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQwIEBACiAyMDE0LTEwLTMwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtXSzJdIFNlbmQgb3JpZ2lu
ICYgZGVsZXRpb24gcmVxdWVzdHMgdG8gV2ViUHJvY2Vzc2VzcyBpbiBhZGRpdG9uIHRvIHRoZSBE
YXRhYmFzZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb3cgdGhhdCB0aGUgV2ViUHJvY2VzcyBoYXMgaXRzIG93biBXZWJPcmlnaW5EYXRh
TWFuYWdlciwgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSBuZWVkcyB0bworICAgICAgICBzZW5k
IGl0cyBvcmlnaW4gYW5kIGRlbGV0aW9uIG1lc3NhZ2VzIHRvIGFsbCB0aGUgV2ViUHJvY2Vzc2Vz
LiBUaGlzIG5lY2Vzc2V0YXRlcyBzeW5jaHJvbml6aW5nCisgICAgICAgIGFsbCB0aGUgdmFyaW91
cyBwcm9jZXNzJ3MgY2FsbGJhY2tzIHNvIHRoYXQgdGhlIGZpbmFsIGNhbGxiYWNrIGlzIG9ubHkg
dHJpZ2dlcmVkIG9uY2UgYWxsIHRoZQorICAgICAgICBtZXNzYWdlZCBwcm9jZXNzZXMgcmVwbHku
CisKKyAgICAgICAgQWRkIGEgc2ltcGxlIGNsYXNzLCBDYWxsYmFja1N5bmNocm9uaXplciwgd2hp
Y2ggd2lsbCBrZWVwIHRyYWNrIG9mIG91dHN0YW5kaW5nIHByb2Nlc3MgY2FsbGJhY2tzCisgICAg
ICAgIGFuZCB3aGljaCB3aWxsIHRyaWdnZXIgdGhlIGZpbmFsIGNhbGxiYWNrIG9uY2UgYWxsIG9m
IHRoZW0gZmluaXNoLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja1N5bmNocm9uaXplcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tTeW5jaHJvbml6ZXI6OmVudGVyKToKKyAgICAg
ICAgKFdlYktpdDo6Q2FsbGJhY2tTeW5jaHJvbml6ZXI6OmxlYXZlKToKKyAgICAgICAgKFdlYktp
dDo6Q2FsbGJhY2tTeW5jaHJvbml6ZXI6OnNldENhbGxiYWNrKToKKyAgICAgICAgKFdlYktpdDo6
Q2FsbGJhY2tTeW5jaHJvbml6ZXI6OmVzY2FsYXRlRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpD
YWxsYmFja1N5bmNocm9uaXplcjo6Q2FsbGJhY2tTeW5jaHJvbml6ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpnZXRPcmlnaW5zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlRW50cmllc0Zvck9yaWdpbik6
CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJp
ZXNNb2RpZmllZEJldHdlZW5EYXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFN
YW5hZ2VyUHJveHk6OmRlbGV0ZUFsbEVudHJpZXMpOgorCisgICAgICAgIERyaXZlLWJ5IGZpeDog
Y2hlY2sgdGhlIGNvcnJlY3QgZW51bSB2YWx1ZSBmb3IgV2ViTWVkaWEgb3JpZ2luIHJlcXVlc3Rz
LgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUHJvY2Vzczo6Z2V0T3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6
OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpk
ZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
cm9jZXNzOjpkZWxldGVBbGxFbnRyaWVzKToKKworMjAxNC0xMC0zMCAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KKwogICAgICAgICBbRU1FXSBBZGQgU2V0dGluZyBmb3IgYWNjZXNz
aW5nIHN0b3JhZ2UgbG9jYXRpb24gZm9yIE1lZGlhS2V5cyBkYXRhCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxNDcKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCmluZGV4
IGUwYzZmMDFjMjM5ZmM2Y2JlODNhZTlhMjYwMDA1MGU2NjI2MGZjOTIuLjZmNGUwYzI2MzhmYWQ2
ZjEwMTgyOGI0MjQyMjdiNzkwMWIzYTY3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKQEAgLTg0LDI3ICs4NCw4
NCBAQCB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBs
ZW1lbnQoKQogICAgIEFQSTo6T2JqZWN0OjpkZXJlZigpOwogfQogCi12b2lkIFdlYk9yaWdpbkRh
dGFNYW5hZ2VyUHJveHk6OmdldE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoQVBJOjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFj
a0Z1bmN0aW9uKQotewotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2Ugb25seSBzdXBwb3J0IElu
ZGV4ZWREYXRhYmFzZSBkYXRhIHNvIHdlIGtub3cgdGhhdCB3ZSdyZSBvbmx5IHNlbmRpbmcgdGhp
cyByZXF1ZXN0IHRvIHRoZSBEYXRhYmFzZVByb2Nlc3MuCi0gICAgLy8gVGhhdCdzIHdoeSBoYXZp
bmcgb25lIHNpbmdsZSBjYWxsYmFjayB3b3Jrcy4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdoZW4g
d2UgbWVzc2FnZSBOLXByb2Nlc3NlcyB3ZSdsbCBoYXZlIHRvIHdhaXQgZm9yIGFsbCBOIHJlcGxp
ZXMgYmVmb3JlIHJlc3BvbmRpbmcgdG8gdGhlIGNsaWVudC4KLSAgICBpZiAoISh0eXBlcyAmIGtX
S0luZGV4ZWREYXRhYmFzZURhdGEpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24obnVsbHB0
ciwgQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7Ci0gICAgICAgIHJldHVybjsKK2NsYXNzIENh
bGxiYWNrU3luY2hyb25pemVyIDogcHVibGljIFJlZkNvdW50ZWQ8Q2FsbGJhY2tTeW5jaHJvbml6
ZXI+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYWxsYmFja1N5bmNocm9uaXpl
cj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IENhbGxiYWNrU3luY2hyb25pemVyKCkp
OyB9CisKKyAgICB2b2lkIHRhc2tFbnRlcigpCisgICAgeworICAgICAgICArK21fY291bnQ7Cisg
ICAgfQorCisgICAgdm9pZCB0YXNrTGVhdmUoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fY291
bnQpOworICAgICAgICBpZiAoIS0tbV9jb3VudCkKKyAgICAgICAgICAgIG1fY2FsbGJhY2sobV9l
cnJvcik7CisgICAgfQorCisgICAgdm9pZCBzZXRDYWxsYmFjayhjb25zdCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgQ2FsbGJhY2tCYXNlOjpFcnJvciYpPiYgY2FsbGJhY2spCisgICAgeworICAg
ICAgICBtX2NhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgfQorCisgICAgdm9pZCBzZXRFcnJvcihj
b25zdCBDYWxsYmFja0Jhc2U6OkVycm9yJiBlcnJvcikKKyAgICB7CisgICAgICAgIG1fZXJyb3Ig
PSBlcnJvcjsKICAgICB9CiAKLSAgICBSZWZQdHI8QXJyYXlDYWxsYmFjaz4gY2FsbGJhY2sgPSBB
cnJheUNhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKK3Byb3Rl
Y3RlZDoKKyAgICBDYWxsYmFja1N5bmNocm9uaXplcigpCisgICAgICAgIDogbV9jb3VudCgwKQor
ICAgICAgICAsIG1fZXJyb3IoQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkKKyAgICB7CisgICAg
fQorCisgICAgdW5zaWduZWQgbV9jb3VudDsKKyAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3Qg
Q2FsbGJhY2tCYXNlOjpFcnJvciYpPiBtX2NhbGxiYWNrOworICAgIENhbGxiYWNrQmFzZTo6RXJy
b3IgbV9lcnJvcjsKK307CiAKK3ZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Z2V0T3Jp
Z2lucyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFy
cmF5KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCit7CiAgICAgaWYg
KCFjb250ZXh0KCkpIHsKLSAgICAgICAgY2FsbGJhY2stPmludmFsaWRhdGUoKTsKKyAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxs
YmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fYXJyYXlDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQs
IGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgUmVmUHRyPEFQSTo6QXJyYXk+IGZpbmFsT3JpZ2lu
cyA9IEFQSTo6QXJyYXk6OmNyZWF0ZSgpOworICAgIFJlZlB0cjxDYWxsYmFja1N5bmNocm9uaXpl
cj4gc3luY2hyb25pemVyID0gQ2FsbGJhY2tTeW5jaHJvbml6ZXI6OmNyZWF0ZSgpOworCisgICAg
c3luY2hyb25pemVyLT5zZXRDYWxsYmFjayhbZmluYWxPcmlnaW5zLCBjYWxsYmFja0Z1bmN0aW9u
XShjb25zdCBDYWxsYmFja0Jhc2U6OkVycm9yJiBlcnJvcil7CisgICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oZmluYWxPcmlnaW5zLmdldCgpLCBlcnJvcik7CisgICAgfSk7CisKKyAgICBhdXRvIHBl
clByb2Nlc3NDYWxsYmFjayA9IFtmaW5hbE9yaWdpbnMsIHN5bmNocm9uaXplcl0oQVBJOjpBcnJh
eSogb3JpZ2lucywgQ2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBpZiAob3Jp
Z2lucykKKyAgICAgICAgICAgIGZpbmFsT3JpZ2lucy0+ZWxlbWVudHMoKS5hcHBlbmRWZWN0b3Io
b3JpZ2lucy0+ZWxlbWVudHMoKSk7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKQorICAgICAgICAgICAgc3luY2hyb25pemVyLT5zZXRFcnJvcihlcnJvcik7
CisgICAgICAgIHN5bmNocm9uaXplci0+dGFza0xlYXZlKCk7CisgICAgfTsKKworICAgIGZvciAo
YXV0byYgcHJvY2VzcyA6IGNvbnRleHQoKS0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYgKCFw
cm9jZXNzIHx8ICFwcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgc3luY2hyb25pemVyLT50YXNrRW50ZXIoKTsKKyAgICAgICAgUmVmUHRy
PEFycmF5Q2FsbGJhY2s+IGNhbGxiYWNrID0gQXJyYXlDYWxsYmFjazo6Y3JlYXRlKHBlclByb2Nl
c3NDYWxsYmFjayk7CisgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgICAgICBtX2FycmF5Q2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxs
YmFjay5yZWxlYXNlKCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmln
aW5EYXRhTWFuYWdlcjo6R2V0T3JpZ2lucyh0eXBlcywgY2FsbGJhY2tJRCksIDApOworICAgIH0K
IAotICAgIGNvbnRleHQoKS0+c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vz
c2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OkdldE9yaWdpbnModHlwZXMsIGNh
bGxiYWNrSUQpKTsKKyAgICB7CisgICAgICAgIHN5bmNocm9uaXplci0+dGFza0VudGVyKCk7Cisg
ICAgICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBjYWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNy
ZWF0ZShwZXJQcm9jZXNzQ2FsbGJhY2spOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0g
Y2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAgbV9hcnJheUNhbGxiYWNrcy5zZXQoY2Fs
bGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAgY29udGV4dCgpLT5zZW5kVG9E
YXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5E
YXRhTWFuYWdlcjo6R2V0T3JpZ2lucyh0eXBlcywgY2FsbGJhY2tJRCkpOworICAgIH0KIH0KIAog
dm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWRHZXRPcmlnaW5zKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdp
bklkZW50aWZpZXJzLCB1aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMTIzLDUzICsxODAsODEgQEAg
dm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWRHZXRPcmlnaW5zKElQQzo6Q29ubmVj
dGlvbiogY29ubmVjdGlvbiwgY29uc3QKIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXZWJTZWN1
cml0eU9yaWdpbiogb3JpZ2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJy
b3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2Ugb25s
eSBzdXBwb3J0IEluZGV4ZWREYXRhYmFzZSBkYXRhIHNvIHdlIGtub3cgdGhhdCB3ZSdyZSBvbmx5
IHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvIHRoZSBEYXRhYmFzZVByb2Nlc3MuCi0gICAgLy8gVGhh
dCdzIHdoeSBoYXZpbmcgb25lIHNpbmdsZSBjYWxsYmFjayB3b3Jrcy4KLSAgICAvLyBJbiB0aGUg
ZnV0dXJlIHdoZW4gd2UgbWVzc2FnZSBOLXByb2Nlc3NlcyB3ZSdsbCBoYXZlIHRvIHdhaXQgZm9y
IGFsbCBOIHJlcGxpZXMgYmVmb3JlIHJlc3BvbmRpbmcgdG8gdGhlIGNsaWVudC4KLSAgICBpZiAo
ISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURhdGEpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSk7CisgICAgaWYgKCFjb250ZXh0KCkpIHsK
KyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxi
YWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
KyAgICBSZWZQdHI8Q2FsbGJhY2tTeW5jaHJvbml6ZXI+IHN5bmNocm9uaXplciA9IENhbGxiYWNr
U3luY2hyb25pemVyOjpjcmVhdGUoKTsKIAotICAgIGlmICghY29udGV4dCgpKSB7Ci0gICAgICAg
IGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgc3lu
Y2hyb25pemVyLT5zZXRDYWxsYmFjayhbY2FsbGJhY2tGdW5jdGlvbl0oY29uc3QgQ2FsbGJhY2tC
YXNlOjpFcnJvciYgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihlcnJvcik7Cisg
ICAgfSk7CiAKLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKLSAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2Uo
KSk7CisgICAgYXV0byBwZXJQcm9jZXNzQ2FsbGJhY2sgPSBbc3luY2hyb25pemVyXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKQorICAgICAgICAgICAgc3luY2hyb25pemVyLT5zZXRFcnJvcihlcnJvcik7
CisgICAgICAgIHN5bmNocm9uaXplci0+dGFza0xlYXZlKCk7CisgICAgfTsKIAogICAgIFNlY3Vy
aXR5T3JpZ2luRGF0YSBzZWN1cml0eU9yaWdpbkRhdGE7CiAgICAgc2VjdXJpdHlPcmlnaW5EYXRh
LnByb3RvY29sID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCk7CiAgICAgc2Vj
dXJpdHlPcmlnaW5EYXRhLmhvc3QgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpOwog
ICAgIHNlY3VyaXR5T3JpZ2luRGF0YS5wb3J0ID0gb3JpZ2luLT5zZWN1cml0eU9yaWdpbigpLnBv
cnQoKTsKIAotICAgIGNvbnRleHQoKS0+c2VuZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJ
Zk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OkRlbGV0ZUVudHJpZXNG
b3JPcmlnaW4odHlwZXMsIHNlY3VyaXR5T3JpZ2luRGF0YSwgY2FsbGJhY2tJRCkpOworICAgIGZv
ciAoYXV0byYgcHJvY2VzcyA6IGNvbnRleHQoKS0+cHJvY2Vzc2VzKCkpIHsKKyAgICAgICAgaWYg
KCFwcm9jZXNzIHx8ICFwcm9jZXNzLT5jYW5TZW5kTWVzc2FnZSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2Fs
bGJhY2s6OmNyZWF0ZShwZXJQcm9jZXNzQ2FsbGJhY2spOworICAgICAgICB1aW50NjRfdCBjYWxs
YmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKKyAgICAgICAgbV92b2lkQ2FsbGJhY2tz
LnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOworICAgICAgICBwcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9yaWdp
bih0eXBlcywgc2VjdXJpdHlPcmlnaW5EYXRhLCBjYWxsYmFja0lEKSwgMCk7CisgICAgfQorCisg
ICAgeworICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFj
azo6Y3JlYXRlKHBlclByb2Nlc3NDYWxsYmFjayk7CisgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNr
SUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAgICBtX3ZvaWRDYWxsYmFja3Muc2V0
KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgICAgIGNvbnRleHQoKS0+c2Vu
ZFRvRGF0YWJhc2VQcm9jZXNzUmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3Jp
Z2luRGF0YU1hbmFnZXI6OkRlbGV0ZUVudHJpZXNGb3JPcmlnaW4odHlwZXMsIHNlY3VyaXR5T3Jp
Z2luRGF0YSwgY2FsbGJhY2tJRCkpOworICAgIH0KIH0KIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFu
YWdlclByb3h5OjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMoV0tPcmlnaW5EYXRh
VHlwZXMgdHlwZXMsIGRvdWJsZSBzdGFydERhdGUsIGRvdWJsZSBlbmREYXRlLCBzdGQ6OmZ1bmN0
aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAg
IC8vIEZJWE1FOiBSaWdodCBub3cgd2Ugb25seSBzdXBwb3J0IEluZGV4ZWREYXRhYmFzZSBkYXRh
IHNvIHdlIGtub3cgdGhhdCB3ZSdyZSBvbmx5IHNlbmRpbmcgdGhpcyByZXF1ZXN0IHRvIHRoZSBE
YXRhYmFzZVByb2Nlc3MuCi0gICAgLy8gVGhhdCdzIHdoeSBoYXZpbmcgb25lIHNpbmdsZSBjYWxs
YmFjayB3b3Jrcy4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdoZW4gd2UgbWVzc2FnZSBOLXByb2Nl
c3NlcyB3ZSdsbCBoYXZlIHRvIHdhaXQgZm9yIGFsbCBOIHJlcGxpZXMgYmVmb3JlIHJlc3BvbmRp
bmcgdG8gdGhlIGNsaWVudC4KLSAgICBpZiAoISh0eXBlcyAmIGtXS0luZGV4ZWREYXRhYmFzZURh
dGEpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9u
ZSk7CisgICAgaWYgKCFjb250ZXh0KCkpIHsKKyAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihDYWxs
YmFja0Jhc2U6OkVycm9yOjpVbmtub3duKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVhdGUoV1RG
Ojptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKKyAgICBSZWZQdHI8Q2FsbGJhY2tTeW5jaHJvbml6
ZXI+IHN5bmNocm9uaXplciA9IENhbGxiYWNrU3luY2hyb25pemVyOjpjcmVhdGUoKTsKIAotICAg
IGlmICghY29udGV4dCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9CisgICAgc3luY2hyb25pemVyLT5zZXRDYWxsYmFjayhbY2FsbGJh
Y2tGdW5jdGlvbl0oY29uc3QgQ2FsbGJhY2tCYXNlOjpFcnJvciYgZXJyb3IpIHsKKyAgICAgICAg
Y2FsbGJhY2tGdW5jdGlvbihlcnJvcik7CisgICAgfSk7CisKKyAgICBhdXRvIHBlclByb2Nlc3ND
YWxsYmFjayA9IFtzeW5jaHJvbml6ZXJdKENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAg
ICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpCisgICAgICAgICAg
ICBzeW5jaHJvbml6ZXItPnNldEVycm9yKGVycm9yKTsKKyAgICAgICAgc3luY2hyb25pemVyLT50
YXNrTGVhdmUoKTsKKyAgICB9OworCisgICAgZm9yIChhdXRvJiBwcm9jZXNzIDogY29udGV4dCgp
LT5wcm9jZXNzZXMoKSkgeworICAgICAgICBpZiAoIXByb2Nlc3MgfHwgIXByb2Nlc3MtPmNhblNl
bmRNZXNzYWdlKCkpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIHVpbnQ2NF90IGNhbGxi
YWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxiYWNrcy5zZXQo
Y2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAgUmVmUHRyPFZvaWRDYWxs
YmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShwZXJQcm9jZXNzQ2FsbGJhY2sp
OworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsK
KyAgICAgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNl
KCkpOworICAgICAgICBwcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdl
cjo6RGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKHR5cGVzLCBzdGFydERhdGUsIGVu
ZERhdGUsIGNhbGxiYWNrSUQpLCAwKTsKKyAgICB9CiAKLSAgICBjb250ZXh0KCktPnNlbmRUb0Rh
dGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRh
dGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXModHlwZXMsIHN0YXJ0
RGF0ZSwgZW5kRGF0ZSwgY2FsbGJhY2tJRCkpOworICAgIHsKKyAgICAgICAgUmVmUHRyPFZvaWRD
YWxsYmFjaz4gY2FsbGJhY2sgPSBWb2lkQ2FsbGJhY2s6OmNyZWF0ZShwZXJQcm9jZXNzQ2FsbGJh
Y2spOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQo
KTsKKyAgICAgICAgbV92b2lkQ2FsbGJhY2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxl
YXNlKCkpOworICAgICAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVFbnRy
aWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXModHlwZXMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsbGJh
Y2tJRCkpOworICAgIH0KIH0KIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWRE
ZWxldGVFbnRyaWVzKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWludDY0X3QgY2FsbGJh
Y2tJRCkKQEAgLTE4MSwyNSArMjY2LDM5IEBAIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94
eTo6ZGlkRGVsZXRlRW50cmllcyhJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIHVpCiAKIHZv
aWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsRW50cmllcyhXS09yaWdpbkRh
dGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChDYWxsYmFja0Jhc2U6OkVycm9yKT4g
Y2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICAvLyBGSVhNRTogUmlnaHQgbm93IHdlIG9ubHkgc3Vw
cG9ydCBJbmRleGVkRGF0YWJhc2UgZGF0YSBzbyB3ZSBrbm93IHRoYXQgd2UncmUgb25seSBzZW5k
aW5nIHRoaXMgcmVxdWVzdCB0byB0aGUgRGF0YWJhc2VQcm9jZXNzLgotICAgIC8vIFRoYXQncyB3
aHkgaGF2aW5nIG9uZSBzaW5nbGUgY2FsbGJhY2sgd29ya3MuCi0gICAgLy8gSW4gdGhlIGZ1dHVy
ZSB3aGVuIHdlIG1lc3NhZ2UgTi1wcm9jZXNzZXMgd2UnbGwgaGF2ZSB0byB3YWl0IGZvciBhbGwg
TiByZXBsaWVzIGJlZm9yZSByZXNwb25kaW5nIHRvIHRoZSBjbGllbnQuCi0gICAgaWYgKCEodHlw
ZXMgJiBrV0tJbmRleGVkRGF0YWJhc2VEYXRhKSkgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9u
KENhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpOworICAgIGlmICghY29udGV4dCgpKSB7CisgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tCYXNlOjpFcnJvcjo6VW5rbm93bik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9
IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURjo6bW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CisgICAg
UmVmUHRyPENhbGxiYWNrU3luY2hyb25pemVyPiBzeW5jaHJvbml6ZXIgPSBDYWxsYmFja1N5bmNo
cm9uaXplcjo6Y3JlYXRlKCk7CiAKLSAgICBpZiAoIWNvbnRleHQoKSkgewotICAgICAgICBjYWxs
YmFjay0+aW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIHN5bmNocm9u
aXplci0+c2V0Q2FsbGJhY2soW2NhbGxiYWNrRnVuY3Rpb25dKGNvbnN0IENhbGxiYWNrQmFzZTo6
RXJyb3ImIGVycm9yKSB7CisgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oZXJyb3IpOworICAgIH0p
OworCisgICAgYXV0byBwZXJQcm9jZXNzQ2FsbGJhY2sgPSBbc3luY2hyb25pemVyXShDYWxsYmFj
a0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIGlmIChlcnJvciAhPSBDYWxsYmFja0Jhc2U6
OkVycm9yOjpOb25lKQorICAgICAgICAgICAgc3luY2hyb25pemVyLT5zZXRFcnJvcihlcnJvcik7
CisgICAgICAgIHN5bmNocm9uaXplci0+dGFza0xlYXZlKCk7CisgICAgfTsKIAotICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOwotICAgIG1fdm9pZENhbGxi
YWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICBmb3IgKGF1dG8m
IHByb2Nlc3MgOiBjb250ZXh0KCktPnByb2Nlc3NlcygpKSB7CisgICAgICAgIGlmICghcHJvY2Vz
cyB8fCAhcHJvY2Vzcy0+Y2FuU2VuZE1lc3NhZ2UoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVjZXNz
YXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlQWxsRW50cmllcyh0eXBl
cywgY2FsbGJhY2tJRCkpOworICAgICAgICBSZWZQdHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9
IFZvaWRDYWxsYmFjazo6Y3JlYXRlKHBlclByb2Nlc3NDYWxsYmFjayk7CisgICAgICAgIHVpbnQ2
NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2FsbGJhY2tJRCgpOworICAgICAgICBtX3ZvaWRD
YWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7CisgICAgICAgIHBy
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVBbGxFbnRy
aWVzKHR5cGVzLCBjYWxsYmFja0lEKSwgMCk7CisgICAgfQorCisgICAgeworICAgICAgICBSZWZQ
dHI8Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKHBlclByb2Nl
c3NDYWxsYmFjayk7CisgICAgICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQgPSBjYWxsYmFjay0+Y2Fs
bGJhY2tJRCgpOworICAgICAgICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxi
YWNrLnJlbGVhc2UoKSk7CisgICAgICAgIGNvbnRleHQoKS0+c2VuZFRvRGF0YWJhc2VQcm9jZXNz
UmVsYXVuY2hpbmdJZk5lY2Vzc2FyeShNZXNzYWdlczo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OkRl
bGV0ZUFsbEVudHJpZXModHlwZXMsIGNhbGxiYWNrSUQpKTsKKyAgICB9CiB9CiAKIHZvaWQgV2Vi
T3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGlkRGVsZXRlQWxsRW50cmllcyhJUEM6OkNvbm5lY3Rp
b24qIGNvbm5lY3Rpb24sIHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAppbmRleCAwYTY1ZmRlMGZmMWYxNzAzMGE0MjU4MTM3NTE4MzYz
MDUyODI3ODVmLi5jOGQxZGJjZjZlMjQ3ZWE1ZTZhNmUzNmYxOTAyMWU4ZWU3NDMxYzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKQEAgLTEyNTQsNyArMTI1NCw3
IEBAIHZvaWQgV2ViUHJvY2Vzczo6c2V0RW5hYmxlZFNlcnZpY2VzKGJvb2wgaGFzSW1hZ2VTZXJ2
aWNlcywgYm9vbCBoYXNTZWxlY3Rpb25TZXJ2CiAKIHZvaWQgV2ViUHJvY2Vzczo6Z2V0T3JpZ2lu
cyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3Rv
cjxTZWN1cml0eU9yaWdpbkRhdGE+Jik+IGNvbXBsZXRpb24pCiB7Ci0gICAgaWYgKCEodHlwZXMg
JiBrV0tXZWJTUUxEYXRhYmFzZU9yaWdpbkRhdGEpKSB7CisgICAgaWYgKCEodHlwZXMgJiBrV0tN
ZWRpYUtleVN0b3JhZ2VPcmlnaW5EYXRhKSkgewogICAgICAgICBjb21wbGV0aW9uKFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI3MCw3
ICsxMjcwLDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVz
IHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoY29uc3QgVmUKIAogdm9pZCBXZWJQcm9jZXNzOjpk
ZWxldGVFbnRyaWVzRm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBjb25zdCBTZWN1
cml0eU9yaWdpbkRhdGEmIG9yaWdpbiwgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb24p
CiB7Ci0gICAgaWYgKCEodHlwZXMgJiBrV0tXZWJTUUxEYXRhYmFzZU9yaWdpbkRhdGEpKSB7Cisg
ICAgaWYgKCEodHlwZXMgJiBrV0tNZWRpYUtleVN0b3JhZ2VPcmlnaW5EYXRhKSkgewogICAgICAg
ICBjb21wbGV0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjg3LDcgKzEyODcs
NyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRh
VHlwZXMgdHlwZXMsIGNvbnN0IFNlY3VyaXR5TwogCiB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVu
dHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgZG91Ymxl
IHN0YXJ0RGF0ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uKQogewotICAgIGlmICghKHR5cGVzICYga1dLV2ViU1FMRGF0YWJhc2VPcmlnaW5EYXRhKSkg
eworICAgIGlmICghKHR5cGVzICYga1dLTWVkaWFLZXlTdG9yYWdlT3JpZ2luRGF0YSkpIHsKICAg
ICAgICAgY29tcGxldGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTMwNCw3ICsx
MzA0LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0
ZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIGRvdWIKIAogdm9pZCBXZWJQcm9jZXNzOjpkZWxl
dGVBbGxFbnRyaWVzKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0aW9uPHZvaWQo
KT4gY29tcGxldGlvbikKIHsKLSAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNlT3Jp
Z2luRGF0YSkpIHsKKyAgICBpZiAoISh0eXBlcyAmIGtXS01lZGlhS2V5U3RvcmFnZU9yaWdpbkRh
dGEpKSB7CiAgICAgICAgIGNvbXBsZXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>240756</attachid>
            <date>2014-10-31 14:36:59 -0700</date>
            <delta_ts>2014-10-31 15:43:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138212-20141031143708.patch</filename>
            <type>text/plain</type>
            <size>14093</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1MzczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMDA4YTAyMDc1NmZlMTQ1
OGE3MTRjYTcxYjZhNGY1MDc2ZGZiN2EzNi4uYTY2Y2M4MjU0ZDM2NDdkYzRmYTY2OTY4MzIwM2Q4
Y2NmZjU2ZjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQxIEBACiAyMDE0LTEwLTMwICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgogCisgICAgICAgIFtXSzJdIFNlbmQgb3JpZ2lu
ICYgZGVsZXRpb24gcmVxdWVzdHMgdG8gV2ViUHJvY2Vzc2VzcyBpbiBhZGRpdG9uIHRvIHRoZSBE
YXRhYmFzZVByb2Nlc3MuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgyMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBOb3cgdGhhdCB0aGUgV2ViUHJvY2VzcyBoYXMgaXRzIG93biBXZWJPcmlnaW5EYXRh
TWFuYWdlciwgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eSBuZWVkcyB0bworICAgICAgICBzZW5k
IGl0cyBvcmlnaW4gYW5kIGRlbGV0aW9uIG1lc3NhZ2VzIHRvIGFsbCB0aGUgV2ViUHJvY2Vzc2Vz
LiBUaGlzIG5lY2Vzc2V0YXRlcyBzeW5jaHJvbml6aW5nCisgICAgICAgIGFsbCB0aGUgdmFyaW91
cyBwcm9jZXNzJ3MgY2FsbGJhY2tzIHNvIHRoYXQgdGhlIGZpbmFsIGNhbGxiYWNrIGlzIG9ubHkg
dHJpZ2dlcmVkIG9uY2UgYWxsIHRoZQorICAgICAgICBtZXNzYWdlZCBwcm9jZXNzZXMgcmVwbHku
CisKKyAgICAgICAgQWRkIGEgc2ltcGxlIGNsYXNzLCBDYWxsYmFja1N5bmNocm9uaXplciwgd2hp
Y2ggd2lsbCBrZWVwIHRyYWNrIG9mIG91dHN0YW5kaW5nIHByb2Nlc3MgY2FsbGJhY2tzCisgICAg
ICAgIGFuZCB3aGljaCB3aWxsIHRyaWdnZXIgdGhlIGZpbmFsIGNhbGxiYWNrIG9uY2UgYWxsIG9m
IHRoZW0gZmluaXNoLgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpDYWxsYmFja1N5bmNocm9uaXplcjo6Y3JlYXRl
KToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tTeW5jaHJvbml6ZXI6On5DYWxsYmFja1N5bmNo
cm9uaXplcik6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrU3luY2hyb25pemVyOjp0YXNrU3Rh
cnRlZCk6CisgICAgICAgIChXZWJLaXQ6OkNhbGxiYWNrU3luY2hyb25pemVyOjp0YXNrQ29tcGxl
dGVkKToKKyAgICAgICAgKFdlYktpdDo6Q2FsbGJhY2tTeW5jaHJvbml6ZXI6OkNhbGxiYWNrU3lu
Y2hyb25pemVyKToKKyAgICAgICAgKFdlYktpdDo6Y3JlYXRlU3luY2hyb25pemVkQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViS2l0OjpzZW5kTWVzc2FnZVRvQWxsUHJvY2Vzc2VzSW5Db250ZXh0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Z2V0T3JpZ2lucyk6
CisgICAgICAgIChXZWJLaXQ6OldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJp
ZXNGb3JPcmlnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5
OjpkZWxldGVFbnRyaWVzTW9kaWZpZWRCZXR3ZWVuRGF0ZXMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVBbGxFbnRyaWVzKToKKworICAgICAgICBE
cml2ZS1ieSBmaXg6IGNoZWNrIHRoZSBjb3JyZWN0IGVudW0gdmFsdWUgZm9yIFdlYk1lZGlhIG9y
aWdpbiByZXF1ZXN0cy4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3M6OmdldE9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpkZWxldGVFbnRyaWVzRm9yT3JpZ2luKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUHJvY2Vzczo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzczo6ZGVsZXRlQWxsRW50cmllcyk6CisKKzIwMTQtMTAtMzAgIEpl
ciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKICAgICAgICAgW0VNRV0gQWRkIFNldHRp
bmcgZm9yIGFjY2Vzc2luZyBzdG9yYWdlIGxvY2F0aW9uIGZvciBNZWRpYUtleXMgZGF0YQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTQ3CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJPcmlnaW5EYXRhTWFuYWdlclBy
b3h5LmNwcAppbmRleCBlMGM2ZjAxYzIzOWZjNmNiZTgzYWU5YTI2MDAwNTBlNjYyNjBmYzkyLi5j
Mzg2OGJkN2M5NWU2YjMwZGNlZDk1MjBmMGRiNjZmY2NkYzlhYTU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuY3BwCkBA
IC04NCwyNyArODQsMTEyIEBAIHZvaWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6ZGVyZWZX
ZWJDb250ZXh0U3VwcGxlbWVudCgpCiAgICAgQVBJOjpPYmplY3Q6OmRlcmVmKCk7CiB9CiAKLXZv
aWQgV2ViT3JpZ2luRGF0YU1hbmFnZXJQcm94eTo6Z2V0T3JpZ2lucyhXS09yaWdpbkRhdGFUeXBl
cyB0eXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChBUEk6OkFycmF5KiwgQ2FsbGJhY2tCYXNlOjpF
cnJvcik+IGNhbGxiYWNrRnVuY3Rpb24pCitjbGFzcyBDYWxsYmFja1N5bmNocm9uaXplciA6IHB1
YmxpYyBSZWZDb3VudGVkPENhbGxiYWNrU3luY2hyb25pemVyPiB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FsbGJhY2tTeW5jaHJvbml6ZXI+IGNyZWF0ZShjb25zdCBzdGQ6OmZ1
bmN0aW9uPHZvaWQoY29uc3QgQ2FsbGJhY2tCYXNlOjpFcnJvciYpPiYgY2FsbGJhY2spCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENhbGxiYWNrU3luY2hyb25pemVyKGNhbGxi
YWNrKSk7CisgICAgfQorCisgICAgfkNhbGxiYWNrU3luY2hyb25pemVyKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghbV9jb3VudCk7CisgICAgICAgIEFTU0VSVCghbV9jYWxsYmFjayk7CisgICAg
fQorCisgICAgdm9pZCB0YXNrU3RhcnRlZCgpCisgICAgeworICAgICAgICArK21fY291bnQ7Cisg
ICAgfQorCisgICAgdm9pZCB0YXNrQ29tcGxldGVkKGNvbnN0IENhbGxiYWNrQmFzZTo6RXJyb3Im
IGVycm9yKQorICAgIHsKKyAgICAgICAgaWYgKGVycm9yICE9IENhbGxiYWNrQmFzZTo6RXJyb3I6
Ok5vbmUpCisgICAgICAgICAgICBtX2Vycm9yID0gZXJyb3I7CisKKyAgICAgICAgQVNTRVJUKG1f
Y291bnQpOworICAgICAgICBpZiAoIS0tbV9jb3VudCkgeworICAgICAgICAgICAgQVNTRVJUKG1f
Y2FsbGJhY2spOworICAgICAgICAgICAgbV9jYWxsYmFjayhtX2Vycm9yKTsKKyAgICAgICAgICAg
IG1fY2FsbGJhY2sgPSBudWxscHRyOworICAgICAgICB9CisgICAgfQorCitwcm90ZWN0ZWQ6Cisg
ICAgQ2FsbGJhY2tTeW5jaHJvbml6ZXIoY29uc3Qgc3RkOjpmdW5jdGlvbjx2b2lkKGNvbnN0IENh
bGxiYWNrQmFzZTo6RXJyb3ImKT4mIGNhbGxiYWNrKQorICAgICAgICA6IG1fY291bnQoMCkKKyAg
ICAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICAgICAsIG1fZXJyb3IoQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKyAg
ICB9CisKKyAgICB1bnNpZ25lZCBtX2NvdW50OworICAgIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25z
dCBDYWxsYmFja0Jhc2U6OkVycm9yJik+IG1fY2FsbGJhY2s7CisgICAgQ2FsbGJhY2tCYXNlOjpF
cnJvciBtX2Vycm9yOworfTsKKworc3RhdGljIHN0ZDo6cGFpcjxSZWZQdHI8Q2FsbGJhY2tTeW5j
aHJvbml6ZXI+LCBWb2lkQ2FsbGJhY2s6OkNhbGxiYWNrRnVuY3Rpb24+IGNyZWF0ZVN5bmNocm9u
aXplZENhbGxiYWNrKHR5cGVuYW1lIFZvaWRDYWxsYmFjazo6Q2FsbGJhY2tGdW5jdGlvbiBjYWxs
YmFjaykKK3sKKyAgICBSZWZQdHI8Q2FsbGJhY2tTeW5jaHJvbml6ZXI+IHN5bmNocm9uaXplciA9
IENhbGxiYWNrU3luY2hyb25pemVyOjpjcmVhdGUoY2FsbGJhY2spOworICAgIFZvaWRDYWxsYmFj
azo6Q2FsbGJhY2tGdW5jdGlvbiBzeW5jaHJvbml6ZWRDYWxsYmFjayA9IFtzeW5jaHJvbml6ZXJd
KENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAgICAgc3luY2hyb25pemVyLT50YXNr
Q29tcGxldGVkKGVycm9yKTsKKyAgICB9OworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN5
bmNocm9uaXplciwgc3luY2hyb25pemVkQ2FsbGJhY2spOworfQorCitzdGF0aWMgc3RkOjpwYWly
PFJlZlB0cjxDYWxsYmFja1N5bmNocm9uaXplcj4sIEFycmF5Q2FsbGJhY2s6OkNhbGxiYWNrRnVu
Y3Rpb24+IGNyZWF0ZVN5bmNocm9uaXplZENhbGxiYWNrKHR5cGVuYW1lIEFycmF5Q2FsbGJhY2s6
OkNhbGxiYWNrRnVuY3Rpb24gY2FsbGJhY2spCiB7Ci0gICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB3
ZSBvbmx5IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNlIGRhdGEgc28gd2Uga25vdyB0aGF0IHdlJ3Jl
IG9ubHkgc2VuZGluZyB0aGlzIHJlcXVlc3QgdG8gdGhlIERhdGFiYXNlUHJvY2Vzcy4KLSAgICAv
LyBUaGF0J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xlIGNhbGxiYWNrIHdvcmtzLgotICAgIC8vIElu
IHRoZSBmdXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4tcHJvY2Vzc2VzIHdlJ2xsIGhhdmUgdG8gd2Fp
dCBmb3IgYWxsIE4gcmVwbGllcyBiZWZvcmUgcmVzcG9uZGluZyB0byB0aGUgY2xpZW50LgotICAg
IGlmICghKHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNlRGF0YSkpIHsKLSAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihudWxscHRyLCBDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKKyAgICBSZWZQ
dHI8QVBJOjpBcnJheT4gYWdncmVnYXRlQXJyYXkgPSBBUEk6OkFycmF5OjpjcmVhdGUoKTsKKyAg
ICBSZWZQdHI8Q2FsbGJhY2tTeW5jaHJvbml6ZXI+IHN5bmNocm9uaXplciA9IENhbGxiYWNrU3lu
Y2hyb25pemVyOjpjcmVhdGUoW2FnZ3JlZ2F0ZUFycmF5LCBjYWxsYmFja10oY29uc3QgQ2FsbGJh
Y2tCYXNlOjpFcnJvciYgZXJyb3IpIHsKKyAgICAgICAgY2FsbGJhY2soYWdncmVnYXRlQXJyYXku
Z2V0KCksIGVycm9yKTsKKyAgICB9KTsKKworICAgIEFycmF5Q2FsbGJhY2s6OkNhbGxiYWNrRnVu
Y3Rpb24gc3luY2hyb25pemVkQ2FsbGJhY2sgPSBbYWdncmVnYXRlQXJyYXksIHN5bmNocm9uaXpl
cl0oQVBJOjpBcnJheSogYXJyYXksIENhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAgICAg
ICAgaWYgKGFycmF5KQorICAgICAgICAgICAgYWdncmVnYXRlQXJyYXktPmVsZW1lbnRzKCkuYXBw
ZW5kVmVjdG9yKGFycmF5LT5lbGVtZW50cygpKTsKKyAgICAgICAgc3luY2hyb25pemVyLT50YXNr
Q29tcGxldGVkKGVycm9yKTsKKyAgICB9OworCisgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKHN5
bmNocm9uaXplciwgc3luY2hyb25pemVkQ2FsbGJhY2spOworfQorCit0ZW1wbGF0ZSA8dHlwZW5h
bWUgQ2FsbGJhY2tUeXBlLCB0eXBlbmFtZSBNZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gUGFyYW1l
dGVycz4KK3N0YXRpYyB2b2lkIHNlbmRNZXNzYWdlVG9BbGxQcm9jZXNzZXNJbkNvbnRleHQoV2Vi
Q29udGV4dCogY29udGV4dCwgdHlwZW5hbWUgQ2FsbGJhY2tUeXBlOjpDYWxsYmFja0Z1bmN0aW9u
IGNhbGxiYWNrLCBIYXNoTWFwPHVpbnQ2NF90LCBSZWZQdHI8Q2FsbGJhY2tUeXBlPj4mIGNhbGxi
YWNrU3RvcmFnZSwgUGFyYW1ldGVycy4uLiBwYXJhbWV0ZXJzKQoreworICAgIGlmICghY29udGV4
dCkgeworICAgICAgICBDYWxsYmFja1R5cGU6OmNyZWF0ZShjYWxsYmFjayktPmludmFsaWRhdGUo
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxBcnJheUNhbGxiYWNrPiBj
YWxsYmFjayA9IEFycmF5Q2FsbGJhY2s6OmNyZWF0ZShXVEY6Om1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOworICAgIGF1dG8gc3luY2hyb25pemVyQW5kQ2FsbGJhY2sgPSBjcmVhdGVTeW5jaHJvbml6
ZWRDYWxsYmFjayhjYWxsYmFjayk7CisgICAgUmVmUHRyPENhbGxiYWNrU3luY2hyb25pemVyPiBz
eW5jaHJvbml6ZXIgPSBzeW5jaHJvbml6ZXJBbmRDYWxsYmFjay5maXJzdDsKKyAgICBhdXRvIHBl
clByb2Nlc3NDYWxsYmFjayA9IHN5bmNocm9uaXplckFuZENhbGxiYWNrLnNlY29uZDsKIAotICAg
IGlmICghY29udGV4dCgpKSB7Ci0gICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAg
ICAgIHJldHVybjsKKyAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBjb250ZXh0LT5wcm9jZXNzZXMo
KSkgeworICAgICAgICBpZiAoIXByb2Nlc3MgfHwgIXByb2Nlc3MtPmNhblNlbmRNZXNzYWdlKCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzeW5jaHJvbml6ZXItPnRhc2tTdGFy
dGVkKCk7CisgICAgICAgIFJlZlB0cjxDYWxsYmFja1R5cGU+IGNhbGxiYWNrID0gQ2FsbGJhY2tU
eXBlOjpjcmVhdGUocGVyUHJvY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgdWludDY0X3QgY2FsbGJh
Y2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7CisgICAgICAgIGNhbGxiYWNrU3RvcmFnZS5z
ZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICAgICAgcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlVHlwZShwYXJhbWV0ZXJzLi4uLCBjYWxsYmFja0lEKSwgMCk7CiAgICAgfQogCi0g
ICAgdWludDY0X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV9h
cnJheUNhbGxiYWNrcy5zZXQoY2FsbGJhY2tJRCwgY2FsbGJhY2sucmVsZWFzZSgpKTsKKyAgICB7
CisgICAgICAgIHN5bmNocm9uaXplci0+dGFza1N0YXJ0ZWQoKTsKKyAgICAgICAgUmVmUHRyPENh
bGxiYWNrVHlwZT4gY2FsbGJhY2sgPSBDYWxsYmFja1R5cGU6OmNyZWF0ZShwZXJQcm9jZXNzQ2Fs
bGJhY2spOworICAgICAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNr
SUQoKTsKKyAgICAgICAgY2FsbGJhY2tTdG9yYWdlLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5y
ZWxlYXNlKCkpOworICAgICAgICBjb250ZXh0LT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5j
aGluZ0lmTmVjZXNzYXJ5KE1lc3NhZ2VUeXBlKHBhcmFtZXRlcnMuLi4sIGNhbGxiYWNrSUQpKTsK
KyAgICB9Cit9CiAKLSAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNo
aW5nSWZOZWNlc3NhcnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpHZXRPcmlnaW5z
KHR5cGVzLCBjYWxsYmFja0lEKSk7Cit2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6Omdl
dE9yaWdpbnMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQVBJ
OjpBcnJheSosIENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1bmN0aW9uKQoreworICAg
IHNlbmRNZXNzYWdlVG9BbGxQcm9jZXNzZXNJbkNvbnRleHQ8QXJyYXlDYWxsYmFjaywgTWVzc2Fn
ZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpHZXRPcmlnaW5zPihjb250ZXh0KCksIGNhbGxiYWNr
RnVuY3Rpb24sIG1fYXJyYXlDYWxsYmFja3MsIHR5cGVzKTsKIH0KIAogdm9pZCBXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5OjpkaWRHZXRPcmlnaW5zKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbklkZW50aWZpZXJzLCB1
aW50NjRfdCBjYWxsYmFja0lEKQpAQCAtMTIzLDUzICsyMDgsMTcgQEAgdm9pZCBXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5OjpkaWRHZXRPcmlnaW5zKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlv
biwgY29uc3QKIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkZWxldGVFbnRyaWVz
Rm9yT3JpZ2luKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBXZWJTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKENhbGxiYWNrQmFzZTo6RXJyb3IpPiBjYWxsYmFja0Z1
bmN0aW9uKQogewotICAgIC8vIEZJWE1FOiBSaWdodCBub3cgd2Ugb25seSBzdXBwb3J0IEluZGV4
ZWREYXRhYmFzZSBkYXRhIHNvIHdlIGtub3cgdGhhdCB3ZSdyZSBvbmx5IHNlbmRpbmcgdGhpcyBy
ZXF1ZXN0IHRvIHRoZSBEYXRhYmFzZVByb2Nlc3MuCi0gICAgLy8gVGhhdCdzIHdoeSBoYXZpbmcg
b25lIHNpbmdsZSBjYWxsYmFjayB3b3Jrcy4KLSAgICAvLyBJbiB0aGUgZnV0dXJlIHdoZW4gd2Ug
bWVzc2FnZSBOLXByb2Nlc3NlcyB3ZSdsbCBoYXZlIHRvIHdhaXQgZm9yIGFsbCBOIHJlcGxpZXMg
YmVmb3JlIHJlc3BvbmRpbmcgdG8gdGhlIGNsaWVudC4KLSAgICBpZiAoISh0eXBlcyAmIGtXS0lu
ZGV4ZWREYXRhYmFzZURhdGEpKSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oQ2FsbGJhY2tC
YXNlOjpFcnJvcjo6Tm9uZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8
Vm9pZENhbGxiYWNrPiBjYWxsYmFjayA9IFZvaWRDYWxsYmFjazo6Y3JlYXRlKFdURjo6bW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7Ci0KLSAgICBpZiAoIWNvbnRleHQoKSkgewotICAgICAgICBjYWxs
YmFjay0+aW52YWxpZGF0ZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdWludDY0
X3QgY2FsbGJhY2tJRCA9IGNhbGxiYWNrLT5jYWxsYmFja0lEKCk7Ci0gICAgbV92b2lkQ2FsbGJh
Y2tzLnNldChjYWxsYmFja0lELCBjYWxsYmFjay5yZWxlYXNlKCkpOwotCiAgICAgU2VjdXJpdHlP
cmlnaW5EYXRhIHNlY3VyaXR5T3JpZ2luRGF0YTsKICAgICBzZWN1cml0eU9yaWdpbkRhdGEucHJv
dG9jb2wgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKTsKICAgICBzZWN1cml0
eU9yaWdpbkRhdGEuaG9zdCA9IG9yaWdpbi0+c2VjdXJpdHlPcmlnaW4oKS5ob3N0KCk7CiAgICAg
c2VjdXJpdHlPcmlnaW5EYXRhLnBvcnQgPSBvcmlnaW4tPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgp
OwogCi0gICAgY29udGV4dCgpLT5zZW5kVG9EYXRhYmFzZVByb2Nlc3NSZWxhdW5jaGluZ0lmTmVj
ZXNzYXJ5KE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9y
aWdpbih0eXBlcywgc2VjdXJpdHlPcmlnaW5EYXRhLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZE1l
c3NhZ2VUb0FsbFByb2Nlc3Nlc0luQ29udGV4dDxWb2lkQ2FsbGJhY2ssIE1lc3NhZ2VzOjpXZWJP
cmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlRW50cmllc0Zvck9yaWdpbj4oY29udGV4dCgpLCBjYWxs
YmFja0Z1bmN0aW9uLCBtX3ZvaWRDYWxsYmFja3MsIHR5cGVzLCBzZWN1cml0eU9yaWdpbkRhdGEp
OwogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUVudHJpZXNNb2Rp
ZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgZG91YmxlIHN0YXJ0RGF0
ZSwgZG91YmxlIGVuZERhdGUsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB3ZSBvbmx5
IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNlIGRhdGEgc28gd2Uga25vdyB0aGF0IHdlJ3JlIG9ubHkg
c2VuZGluZyB0aGlzIHJlcXVlc3QgdG8gdGhlIERhdGFiYXNlUHJvY2Vzcy4KLSAgICAvLyBUaGF0
J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xlIGNhbGxiYWNrIHdvcmtzLgotICAgIC8vIEluIHRoZSBm
dXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4tcHJvY2Vzc2VzIHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3Ig
YWxsIE4gcmVwbGllcyBiZWZvcmUgcmVzcG9uZGluZyB0byB0aGUgY2xpZW50LgotICAgIGlmICgh
KHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNlRGF0YSkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVh
dGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLQotICAgIGlmICghY29udGV4dCgpKSB7
Ci0gICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAg
ICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0K
LSAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVFbnRyaWVzTW9kaWZpZWRC
ZXR3ZWVuRGF0ZXModHlwZXMsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgY2FsbGJhY2tJRCkpOworICAg
IHNlbmRNZXNzYWdlVG9BbGxQcm9jZXNzZXNJbkNvbnRleHQ8Vm9pZENhbGxiYWNrLCBNZXNzYWdl
czo6V2ViT3JpZ2luRGF0YU1hbmFnZXI6OkRlbGV0ZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRl
cz4oY29udGV4dCgpLCBjYWxsYmFja0Z1bmN0aW9uLCBtX3ZvaWRDYWxsYmFja3MsIHR5cGVzLCBz
dGFydERhdGUsIGVuZERhdGUpOwogfQogCiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6
OmRpZERlbGV0ZUVudHJpZXMoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aW50NjRfdCBj
YWxsYmFja0lEKQpAQCAtMTgxLDI1ICsyMzAsNyBAQCB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2Vy
UHJveHk6OmRpZERlbGV0ZUVudHJpZXMoSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCB1aQog
CiB2b2lkIFdlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmln
aW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJv
cik+IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgLy8gRklYTUU6IFJpZ2h0IG5vdyB3ZSBvbmx5
IHN1cHBvcnQgSW5kZXhlZERhdGFiYXNlIGRhdGEgc28gd2Uga25vdyB0aGF0IHdlJ3JlIG9ubHkg
c2VuZGluZyB0aGlzIHJlcXVlc3QgdG8gdGhlIERhdGFiYXNlUHJvY2Vzcy4KLSAgICAvLyBUaGF0
J3Mgd2h5IGhhdmluZyBvbmUgc2luZ2xlIGNhbGxiYWNrIHdvcmtzLgotICAgIC8vIEluIHRoZSBm
dXR1cmUgd2hlbiB3ZSBtZXNzYWdlIE4tcHJvY2Vzc2VzIHdlJ2xsIGhhdmUgdG8gd2FpdCBmb3Ig
YWxsIE4gcmVwbGllcyBiZWZvcmUgcmVzcG9uZGluZyB0byB0aGUgY2xpZW50LgotICAgIGlmICgh
KHR5cGVzICYga1dLSW5kZXhlZERhdGFiYXNlRGF0YSkpIHsKLSAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbihDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIFJlZlB0cjxWb2lkQ2FsbGJhY2s+IGNhbGxiYWNrID0gVm9pZENhbGxiYWNrOjpjcmVh
dGUoV1RGOjptb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKLQotICAgIGlmICghY29udGV4dCgpKSB7
Ci0gICAgICAgIGNhbGxiYWNrLT5pbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gY2FsbGJhY2stPmNhbGxiYWNrSUQoKTsKLSAg
ICBtX3ZvaWRDYWxsYmFja3Muc2V0KGNhbGxiYWNrSUQsIGNhbGxiYWNrLnJlbGVhc2UoKSk7Ci0K
LSAgICBjb250ZXh0KCktPnNlbmRUb0RhdGFiYXNlUHJvY2Vzc1JlbGF1bmNoaW5nSWZOZWNlc3Nh
cnkoTWVzc2FnZXM6OldlYk9yaWdpbkRhdGFNYW5hZ2VyOjpEZWxldGVBbGxFbnRyaWVzKHR5cGVz
LCBjYWxsYmFja0lEKSk7CisgICAgc2VuZE1lc3NhZ2VUb0FsbFByb2Nlc3Nlc0luQ29udGV4dDxW
b2lkQ2FsbGJhY2ssIE1lc3NhZ2VzOjpXZWJPcmlnaW5EYXRhTWFuYWdlcjo6RGVsZXRlQWxsRW50
cmllcz4oY29udGV4dCgpLCBjYWxsYmFja0Z1bmN0aW9uLCBtX3ZvaWRDYWxsYmFja3MsIHR5cGVz
KTsKIH0KIAogdm9pZCBXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5OjpkaWREZWxldGVBbGxFbnRy
aWVzKElQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDBhNjVmZGUwZmYxZjE3
MDMwYTQyNTgxMzc1MTgzNjMwNTI4Mjc4NWYuLmM4ZDFkYmNmNmUyNDdlYTVlNmE2ZTM2ZjE5MDIx
ZThlZTc0MzFjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApA
QCAtMTI1NCw3ICsxMjU0LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRFbmFibGVkU2VydmljZXMo
Ym9vbCBoYXNJbWFnZVNlcnZpY2VzLCBib29sIGhhc1NlbGVjdGlvblNlcnYKIAogdm9pZCBXZWJQ
cm9jZXNzOjpnZXRPcmlnaW5zKFdLT3JpZ2luRGF0YVR5cGVzIHR5cGVzLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQoY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mKT4gY29tcGxldGlvbikKIHsK
LSAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNlT3JpZ2luRGF0YSkpIHsKKyAgICBp
ZiAoISh0eXBlcyAmIGtXS01lZGlhS2V5U3RvcmFnZU9yaWdpbkRhdGEpKSB7CiAgICAgICAgIGNv
bXBsZXRpb24oVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4oKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0xMjcwLDcgKzEyNzAsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmdldE9yaWdpbnMo
V0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZChjb25zdCBWZQogCiB2
b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVudHJpZXNGb3JPcmlnaW4oV0tPcmlnaW5EYXRhVHlwZXMg
dHlwZXMsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQoKT4gY29tcGxldGlvbikKIHsKLSAgICBpZiAoISh0eXBlcyAmIGtXS1dlYlNRTERhdGFiYXNl
T3JpZ2luRGF0YSkpIHsKKyAgICBpZiAoISh0eXBlcyAmIGtXS01lZGlhS2V5U3RvcmFnZU9yaWdp
bkRhdGEpKSB7CiAgICAgICAgIGNvbXBsZXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTEyODcsNyArMTI4Nyw3IEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGVsZXRlRW50cmllc0Zvck9y
aWdpbihXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgY29uc3QgU2VjdXJpdHlPCiAKIHZvaWQgV2Vi
UHJvY2Vzczo6ZGVsZXRlRW50cmllc01vZGlmaWVkQmV0d2VlbkRhdGVzKFdLT3JpZ2luRGF0YVR5
cGVzIHR5cGVzLCBkb3VibGUgc3RhcnREYXRlLCBkb3VibGUgZW5kRGF0ZSwgc3RkOjpmdW5jdGlv
bjx2b2lkKCk+IGNvbXBsZXRpb24pCiB7Ci0gICAgaWYgKCEodHlwZXMgJiBrV0tXZWJTUUxEYXRh
YmFzZU9yaWdpbkRhdGEpKSB7CisgICAgaWYgKCEodHlwZXMgJiBrV0tNZWRpYUtleVN0b3JhZ2VP
cmlnaW5EYXRhKSkgewogICAgICAgICBjb21wbGV0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CkBAIC0xMzA0LDcgKzEzMDQsNyBAQCB2b2lkIFdlYlByb2Nlc3M6OmRlbGV0ZUVudHJpZXNN
b2RpZmllZEJldHdlZW5EYXRlcyhXS09yaWdpbkRhdGFUeXBlcyB0eXBlcywgZG91YgogCiB2b2lk
IFdlYlByb2Nlc3M6OmRlbGV0ZUFsbEVudHJpZXMoV0tPcmlnaW5EYXRhVHlwZXMgdHlwZXMsIHN0
ZDo6ZnVuY3Rpb248dm9pZCgpPiBjb21wbGV0aW9uKQogewotICAgIGlmICghKHR5cGVzICYga1dL
V2ViU1FMRGF0YWJhc2VPcmlnaW5EYXRhKSkgeworICAgIGlmICghKHR5cGVzICYga1dLTWVkaWFL
ZXlTdG9yYWdlT3JpZ2luRGF0YSkpIHsKICAgICAgICAgY29tcGxldGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQo=
</data>
<flag name="review"
          id="265544"
          type_id="1"
          status="+"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>