<?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>193429</bug_id>
          
          <creation_ts>2019-01-14 20:45:14 -0800</creation_ts>
          <short_desc>Split headerValueForVary into specialized functions for NetworkProcess and WebProcess/WebKitLegacy</short_desc>
          <delta_ts>2019-01-14 21:17:29 -0800</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>WebKit 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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1494502</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-14 20:45:14 -0800</bug_when>
    <thetext>Split headerValueForVary into specialized functions for NetworkProcess and WebProcess/WebKitLegacy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494506</commentid>
    <comment_count>1</comment_count>
      <attachid>359127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-14 20:52:27 -0800</bug_when>
    <thetext>Created attachment 359127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494516</commentid>
    <comment_count>2</comment_count>
      <attachid>359127</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-01-14 21:08:24 -0800</bug_when>
    <thetext>Comment on attachment 359127
Patch

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

r=me

&gt; Source/WebCore/platform/network/CacheValidation.cpp:346
&gt; +        return cookieRequestHeaderFieldValue();

I was confused for a while that this was the parameter name and not one of the static functions. Might be nice to give this a different name that doesn&apos;t clash, or maybe that was your intention.

&gt; Source/WebCore/platform/network/CacheValidation.cpp:407
&gt; +    return verifyVaryingRequestHeaders(varyingRequestHeaders, [&amp;] (const String&amp; headerName) {

Do we want to maintain the assert, and potentially change it later?

    ASSERT(sessionID == PAL::SessionID::defaultSessionID());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494517</commentid>
    <comment_count>3</comment_count>
      <attachid>359127</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-14 21:10:43 -0800</bug_when>
    <thetext>Comment on attachment 359127
Patch

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

&gt;&gt; Source/WebCore/platform/network/CacheValidation.cpp:346
&gt;&gt; +        return cookieRequestHeaderFieldValue();
&gt; 
&gt; I was confused for a while that this was the parameter name and not one of the static functions. Might be nice to give this a different name that doesn&apos;t clash, or maybe that was your intention.

Yeah, I&apos;ll add -Function and -Internal suffixes to make this less confusing.

&gt;&gt; Source/WebCore/platform/network/CacheValidation.cpp:407
&gt;&gt; +    return verifyVaryingRequestHeaders(varyingRequestHeaders, [&amp;] (const String&amp; headerName) {
&gt; 
&gt; Do we want to maintain the assert, and potentially change it later?
&gt; 
&gt;     ASSERT(sessionID == PAL::SessionID::defaultSessionID());

The assertion is not valid here.  It is valid in the versions that use a NetworkStorageSession&amp;, and I&apos;m using defaultStorageSession in this patch which accomplishes the same thing as the assertion in a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494518</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-01-14 21:16:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/r239974</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1494522</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-01-14 21:17:29 -0800</bug_when>
    <thetext>&lt;rdar://problem/47275515&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>359127</attachid>
            <date>2019-01-14 20:52:27 -0800</date>
            <delta_ts>2019-01-14 21:08:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-193429-20190114205226.patch</filename>
            <type>text/plain</type>
            <size>16374</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzOTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE5LTAxLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3BsaXQgaGVh
ZGVyVmFsdWVGb3JWYXJ5IGludG8gc3BlY2lhbGl6ZWQgZnVuY3Rpb25zIGZvciBOZXR3b3JrUHJv
Y2VzcyBhbmQgV2ViUHJvY2Vzcy9XZWJLaXRMZWdhY3kKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MzQyOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGhlYWRlclZhbHVlRm9yVmFyeSBpcyBhIHN0cmFuZ2Ug
ZnVuY3Rpb24gdGhhdCBpcyBjYXVzaW5nIHRyb3VibGUgd2l0aCBteSBOZXR3b3JrUHJvY2VzcyBn
bG9iYWwgc3RhdGUgcmVtb3ZhbCBwcm9qZWN0LgorICAgICAgICBJdCBjdXJyZW50bHkgYWNjZXNz
ZXMgdGhlIGNvb2tpZSBzdG9yYWdlIHRvIHNlZSBpZiB0aGVyZSdzIGEgbWF0Y2ggaW4gdHdvIGRp
ZmZlcmVudCB3YXlzIGN1cnJlbnRseSB3cml0dGVuIGFzIGZhbGxiYWNrcy4KKyAgICAgICAgSW4g
dGhlIFdlYlByb2Nlc3Mgb3IgaW4gV2ViS2l0TGVnYWN5LCBpdCB1c2VzIGNvb2tpZXNTdHJhdGVn
eSB0byBhY2Nlc3MgY29va2llcyB2aWEgSVBDIG9yIGRpcmVjdGx5LCByZXNwZWN0aXZlbHksCisg
ICAgICAgIGRlcGVuZGluZyBvbiB0aGUgUGxhdGZvcm1TdHJhdGVnaWVzIGltcGxlbWVudGF0aW9u
IG9mIGNvb2tpZXNTdHJhdGVneSBmb3IgdGhhdCBwcm9jZXNzLgorICAgICAgICBJbiB0aGUgTmV0
d29ya1Byb2Nlc3MsIGl0IHVzZXMgV2ViQ29yZTo6TmV0d29ya1N0b3JhZ2VTZXNzaW9uIHRvIGFj
Y2VzcyBjb29raWVzIGRpcmVjdGx5LgorICAgICAgICBCb3RoIG9mIHRoZXNlIGNvb2tpZSBhY2Nl
c3NpbmcgbWV0aG9kcyB1c2UgZ2xvYmFsIHN0YXRlIGluIHRoZSBwcm9jZXNzLCBhbmQgSSBtdXN0
IHNwbGl0IHRoZW0gdG8gcmVmYWN0b3IgdGhlbSBzZXBhcmF0ZWx5LgorICAgICAgICBUaGlzIHBh
dGNoIGRvZXMgdGhlIHNwbGl0IGJ5IHBhc3NpbmcgaW4gdGhlIG1ldGhvZCBvZiBjb29raWUgYWNj
ZXNzOiBhIENvb2tpZXNTdHJhdGVneSYgb3IgYSBOZXR3b3JrU3RvcmFnZVNlc3Npb24mLgorICAg
ICAgICBGdXJ0aGVyIHJlZmFjdG9yaW5nIHdpbGwgYmUgZG9uZSBpbiBidWcgMTkzMzY4IGFuZCBi
dWcgMTYxMTA2IHRvIGJ1aWxkIG9uIHRoaXMgYW5kIHJlcGxhY2UgdGhlIGdsb2JhbCBzdGF0ZSB3
aXRoCisgICAgICAgIG1lbWJlciB2YXJpYWJsZXMgb2YgdGhlIGNvcnJlY3QgY29udGFpbmluZyBv
YmplY3RzLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRSZXNwb25zZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6dmFyeUhlYWRlclZhbHVlc01hdGNoKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojpjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpoZWFk
ZXJWYWx1ZUZvclZhcnkpOgorICAgICAgICAoV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0
SGVhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjp2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMp
OgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmg6CisKIDIwMTkt
MDEtMTQgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3Zl
IHJlZHVuZGFudCBjaGVjayBmb3IgYWxpZ25BdHRyIGFuZCBoaWRkZW5BdHRyIGluIHZhcmlvdXMg
aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUgb3ZlcnJpZGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDIzOTk1OSkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRSZXNwb25z
ZShjb25zdCBSCiB7CiAgICAgQVNTRVJUKG1fcmVzcG9uc2UudHlwZSgpID09IFJlc291cmNlUmVz
cG9uc2U6OlR5cGU6OkRlZmF1bHQpOwogICAgIG1fcmVzcG9uc2UgPSByZXNwb25zZTsKLSAgICBt
X3ZhcnlpbmdIZWFkZXJWYWx1ZXMgPSBjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKG1fcmVz
b3VyY2VSZXF1ZXN0LCBtX3Jlc3BvbnNlLCBtX3Nlc3Npb25JRCk7CisgICAgbV92YXJ5aW5nSGVh
ZGVyVmFsdWVzID0gY29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycygqcGxhdGZvcm1TdHJhdGVn
aWVzKCktPmNvb2tpZXNTdHJhdGVneSgpLCBtX3Jlc291cmNlUmVxdWVzdCwgbV9yZXNwb25zZSwg
bV9zZXNzaW9uSUQpOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgIGlmIChtX3Jl
c3BvbnNlLnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtl
cikgewpAQCAtODU4LDcgKzg1OCw3IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OnZhcnlIZWFkZXJW
YWx1ZXNNYXQKICAgICBpZiAobV92YXJ5aW5nSGVhZGVyVmFsdWVzLmlzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gdmVyaWZ5VmFyeWluZ1JlcXVlc3RIZWFkZXJz
KG1fdmFyeWluZ0hlYWRlclZhbHVlcywgcmVxdWVzdCwgbV9zZXNzaW9uSUQpOworICAgIHJldHVy
biB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5jb29r
aWVzU3RyYXRlZ3koKSwgbV92YXJ5aW5nSGVhZGVyVmFsdWVzLCByZXF1ZXN0LCBtX3Nlc3Npb25J
RCk7CiB9CiAKIHVuc2lnbmVkIENhY2hlZFJlc291cmNlOjpvdmVyaGVhZFNpemUoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxp
ZGF0aW9uLmNwcAkocmV2aXNpb24gMjM5OTU5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsMjcgKzMy
NiwzMCBAQCBDYWNoZUNvbnRyb2xEaXJlY3RpdmVzIHBhcnNlQ2FjaGVDb250cm9sCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIFN0cmluZyBoZWFkZXJWYWx1ZUZvclZhcnkoY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGhlYWRlck5hbWUsIFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCkKK3N0YXRpYyBTdHJpbmcgY29va2llUmVxdWVzdEhlYWRlckZp
ZWxkVmFsdWUoY29uc3QgTmV0d29ya1N0b3JhZ2VTZXNzaW9uJiBzZXNzaW9uLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIHNlc3Npb24uY29va2llUmVxdWVz
dEhlYWRlckZpZWxkVmFsdWUocmVxdWVzdC5maXJzdFBhcnR5Rm9yQ29va2llcygpLCBTYW1lU2l0
ZUluZm86OmNyZWF0ZShyZXF1ZXN0KSwgcmVxdWVzdC51cmwoKSwgV1RGOjpudWxsb3B0LCBXVEY6
Om51bGxvcHQsIHJlcXVlc3QudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKSA/IEluY2x1ZGVTZWN1
cmVDb29raWVzOjpZZXMgOiBJbmNsdWRlU2VjdXJlQ29va2llczo6Tm8pLmZpcnN0OworfQorCitz
dGF0aWMgU3RyaW5nIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKENvb2tpZXNTdHJhdGVn
eSYgY29va2llc1N0cmF0ZWd5LCBjb25zdCBQQUw6OlNlc3Npb25JRCYgc2Vzc2lvbklELCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIGNvb2tpZXNTdHJhdGVn
eS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzZXNzaW9uSUQsIHJlcXVlc3QuZmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSwgU2FtZVNpdGVJbmZvOjpjcmVhdGUocmVxdWVzdCksIHJlcXVlc3Qu
dXJsKCksIFdURjo6bnVsbG9wdCwgV1RGOjpudWxsb3B0LCByZXF1ZXN0LnVybCgpLnByb3RvY29s
SXMoImh0dHBzIikgPyBJbmNsdWRlU2VjdXJlQ29va2llczo6WWVzIDogSW5jbHVkZVNlY3VyZUNv
b2tpZXM6Ok5vKS5maXJzdDsKK30KKworc3RhdGljIFN0cmluZyBoZWFkZXJWYWx1ZUZvclZhcnko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGhlYWRlck5hbWUs
IEZ1bmN0aW9uPFN0cmluZygpPiYmIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKQogewog
ICAgIC8vIEV4cGxpY2l0IGhhbmRsaW5nIGZvciBjb29raWVzIGlzIG5lZWRlZCBiZWNhdXNlIHRo
ZXkgYXJlIGFkZGVkIG1hZ2ljYWxseSBieSB0aGUgbmV0d29ya2luZyBsYXllci4KICAgICAvLyBG
SVhNRTogVGhlIHZhbHVlIG1pZ2h0IGhhdmUgY2hhbmdlZCBiZXR3ZWVuIG1ha2luZyB0aGUgcmVx
dWVzdCBhbmQgcmV0cmlldmluZyB0aGUgY29va2llIGhlcmUuCiAgICAgLy8gV2UgY291bGQgZmV0
Y2ggdGhlIGNvb2tpZSB3aGVuIG1ha2luZyB0aGUgcmVxdWVzdCBidXQgdGhhdCBzZWVtcyBvdmVy
a2lsbCBhcyB0aGUgY2FzZSBpcyB2ZXJ5IHJhcmUgYW5kIGl0CiAgICAgLy8gaXMgYSBibG9ja2lu
ZyBvcGVyYXRpb24uIFRoaXMgc2hvdWxkIGJlIHN1ZmZpY2llbnQgdG8gY292ZXIgcmVhc29uYWJs
ZSBjYXNlcy4KLSAgICBpZiAoaGVhZGVyTmFtZSA9PSBodHRwSGVhZGVyTmFtZVN0cmluZyhIVFRQ
SGVhZGVyTmFtZTo6Q29va2llKSkgewotICAgICAgICBhdXRvIGluY2x1ZGVTZWN1cmVDb29raWVz
ID0gcmVxdWVzdC51cmwoKS5wcm90b2NvbElzKCJodHRwcyIpID8gSW5jbHVkZVNlY3VyZUNvb2tp
ZXM6OlllcyA6IEluY2x1ZGVTZWN1cmVDb29raWVzOjpObzsKLSAgICAgICAgYXV0byogY29va2ll
U3RyYXRlZ3kgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKSA/IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5j
b29raWVzU3RyYXRlZ3koKSA6IG51bGxwdHI7Ci0gICAgICAgIGlmICghY29va2llU3RyYXRlZ3kp
IHsKLSAgICAgICAgICAgIEFTU0VSVChzZXNzaW9uSUQgPT0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1
bHRTZXNzaW9uSUQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTmV0d29ya1N0b3JhZ2VTZXNzaW9u
OjpkZWZhdWx0U3RvcmFnZVNlc3Npb24oKS5jb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShy
ZXF1ZXN0LmZpcnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVl
c3QpLCByZXF1ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNl
Y3VyZUNvb2tpZXMpLmZpcnN0OwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBjb29raWVTdHJh
dGVneS0+Y29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc2Vzc2lvbklELCByZXF1ZXN0LmZp
cnN0UGFydHlGb3JDb29raWVzKCksIFNhbWVTaXRlSW5mbzo6Y3JlYXRlKHJlcXVlc3QpLCByZXF1
ZXN0LnVybCgpLCBXVEY6Om51bGxvcHQsIFdURjo6bnVsbG9wdCwgaW5jbHVkZVNlY3VyZUNvb2tp
ZXMpLmZpcnN0OwotICAgIH0KKyAgICBpZiAoaGVhZGVyTmFtZSA9PSBodHRwSGVhZGVyTmFtZVN0
cmluZyhIVFRQSGVhZGVyTmFtZTo6Q29va2llKSkKKyAgICAgICAgcmV0dXJuIGNvb2tpZVJlcXVl
c3RIZWFkZXJGaWVsZFZhbHVlKCk7CiAgICAgcmV0dXJuIHJlcXVlc3QuaHR0cEhlYWRlckZpZWxk
KGhlYWRlck5hbWUpOwogfQogCi1WZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gY29s
bGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCitzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IGNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXNwb25z
ZSYgcmVzcG9uc2UsIEZ1bmN0aW9uPFN0cmluZyhjb25zdCBTdHJpbmcmIGhlYWRlck5hbWUpPiYm
IGhlYWRlclZhbHVlRm9yVmFyeSkKIHsKLSAgICBTdHJpbmcgdmFyeVZhbHVlID0gcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKFdlYkNvcmU6OkhUVFBIZWFkZXJOYW1lOjpWYXJ5KTsKKyAgICBTdHJp
bmcgdmFyeVZhbHVlID0gcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpW
YXJ5KTsKICAgICBpZiAodmFyeVZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICBWZWN0b3I8U3RyaW5nPiB2YXJ5aW5nSGVhZGVyTmFtZXMgPSB2YXJ5VmFsdWUuc3BsaXQo
JywnKTsKQEAgLTM1NCwyNSArMzU3LDYwIEBAIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJp
bmc+PiBjb2xsZWMKICAgICB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMucmVzZXJ2ZUNhcGFjaXR5KHZh
cnlpbmdIZWFkZXJOYW1lcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgdmFyeUhlYWRlck5hbWUg
OiB2YXJ5aW5nSGVhZGVyTmFtZXMpIHsKICAgICAgICAgU3RyaW5nIGhlYWRlck5hbWUgPSB2YXJ5
SGVhZGVyTmFtZS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgU3RyaW5nIGhlYWRlclZhbHVl
ID0gaGVhZGVyVmFsdWVGb3JWYXJ5KHJlcXVlc3QsIGhlYWRlck5hbWUsIHNlc3Npb25JRCk7Cisg
ICAgICAgIFN0cmluZyBoZWFkZXJWYWx1ZSA9IGhlYWRlclZhbHVlRm9yVmFyeShoZWFkZXJOYW1l
KTsKICAgICAgICAgdmFyeWluZ1JlcXVlc3RIZWFkZXJzLmFwcGVuZChzdGQ6Om1ha2VfcGFpciho
ZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZSkpOwogICAgIH0KICAgICByZXR1cm4gdmFyeWluZ1JlcXVl
c3RIZWFkZXJzOwogfQogCi1ib29sIHZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhjb25zdCBW
ZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVycywg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQpCitWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gY29sbGVjdFZhcnlp
bmdSZXF1ZXN0SGVhZGVycyhOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHN0b3JhZ2VTZXNzaW9uLCBj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIHJldHVybiBjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKHJlc3Bv
bnNlLCBbJl0gKGNvbnN0IFN0cmluZyYgaGVhZGVyTmFtZSkgeworICAgICAgICByZXR1cm4gaGVh
ZGVyVmFsdWVGb3JWYXJ5KHJlcXVlc3QsIGhlYWRlck5hbWUsIFsmXSB7CisgICAgICAgICAgICBy
ZXR1cm4gY29va2llUmVxdWVzdEhlYWRlckZpZWxkVmFsdWUoc3RvcmFnZVNlc3Npb24sIHJlcXVl
c3QpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcs
IFN0cmluZz4+IGNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoQ29va2llc1N0cmF0ZWd5JiBj
b29raWVzU3RyYXRlZ3ksIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVz
b3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFBBTDo6U2Vzc2lvbklEJiBzZXNzaW9uSUQp
Cit7CisgICAgcmV0dXJuIGNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMocmVzcG9uc2UsIFsm
XSAoY29uc3QgU3RyaW5nJiBoZWFkZXJOYW1lKSB7CisgICAgICAgIHJldHVybiBoZWFkZXJWYWx1
ZUZvclZhcnkocmVxdWVzdCwgaGVhZGVyTmFtZSwgWyZdIHsKKyAgICAgICAgICAgIHJldHVybiBj
b29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShjb29raWVzU3RyYXRlZ3ksIHNlc3Npb25JRCwg
cmVxdWVzdCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitzdGF0aWMgYm9vbCB2ZXJpZnlW
YXJ5aW5nUmVxdWVzdEhlYWRlcnMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMsIEZ1bmN0aW9uPFN0cmluZyhjb25zdCBTdHJpbmcm
KT4mJiBoZWFkZXJWYWx1ZUZvclZhcnkpCiB7CiAgICAgZm9yIChhdXRvJiB2YXJ5aW5nUmVxdWVz
dEhlYWRlciA6IHZhcnlpbmdSZXF1ZXN0SGVhZGVycykgewogICAgICAgICAvLyBGSVhNRTogVmFy
eTogKiBpbiByZXNwb25zZSB3b3VsZCBpZGVhbGx5IHRyaWdnZXIgYSBjYWNoZSBkZWxldGUgaW5z
dGVhZCBvZiBhIHN0b3JlLgogICAgICAgICBpZiAodmFyeWluZ1JlcXVlc3RIZWFkZXIuZmlyc3Qg
PT0gIioiKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBTdHJpbmcgaGVhZGVy
VmFsdWUgPSBoZWFkZXJWYWx1ZUZvclZhcnkocmVxdWVzdCwgdmFyeWluZ1JlcXVlc3RIZWFkZXIu
Zmlyc3QsIHNlc3Npb25JRCk7Ci0gICAgICAgIGlmIChoZWFkZXJWYWx1ZSAhPSB2YXJ5aW5nUmVx
dWVzdEhlYWRlci5zZWNvbmQpCisgICAgICAgIGlmIChoZWFkZXJWYWx1ZUZvclZhcnkodmFyeWlu
Z1JlcXVlc3RIZWFkZXIuZmlyc3QpICE9IHZhcnlpbmdSZXF1ZXN0SGVhZGVyLnNlY29uZCkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKK2Jv
b2wgdmVyaWZ5VmFyeWluZ1JlcXVlc3RIZWFkZXJzKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbiYgc3Rv
cmFnZVNlc3Npb24sIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiYgdmFy
eWluZ1JlcXVlc3RIZWFkZXJzLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7Cisg
ICAgcmV0dXJuIHZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyh2YXJ5aW5nUmVxdWVzdEhlYWRl
cnMsIFsmXSAoY29uc3QgU3RyaW5nJiBoZWFkZXJOYW1lKSB7CisgICAgICAgIHJldHVybiBoZWFk
ZXJWYWx1ZUZvclZhcnkocmVxdWVzdCwgaGVhZGVyTmFtZSwgWyZdIHsKKyAgICAgICAgICAgIHJl
dHVybiBjb29raWVSZXF1ZXN0SGVhZGVyRmllbGRWYWx1ZShzdG9yYWdlU2Vzc2lvbiwgcmVxdWVz
dCk7CisgICAgICAgIH0pOworICAgIH0pOworfQorCitib29sIHZlcmlmeVZhcnlpbmdSZXF1ZXN0
SGVhZGVycyhDb29raWVzU3RyYXRlZ3kmIGNvb2tpZXNTdHJhdGVneSwgY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCkK
K3sKKyAgICByZXR1cm4gdmVyaWZ5VmFyeWluZ1JlcXVlc3RIZWFkZXJzKHZhcnlpbmdSZXF1ZXN0
SGVhZGVycywgWyZdIChjb25zdCBTdHJpbmcmIGhlYWRlck5hbWUpIHsKKyAgICAgICAgcmV0dXJu
IGhlYWRlclZhbHVlRm9yVmFyeShyZXF1ZXN0LCBoZWFkZXJOYW1lLCBbJl0geworICAgICAgICAg
ICAgcmV0dXJuIGNvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlKGNvb2tpZXNTdHJhdGVneSwg
c2Vzc2lvbklELCByZXF1ZXN0KTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKIC8vIGh0dHA6
Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzEjcGFnZS00OAogYm9vbCBpc1N0YXR1c0NvZGVD
YWNoZWFibGVCeURlZmF1bHQoaW50IHN0YXR1c0NvZGUpCiB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmgJKHJldmlzaW9uIDIz
OTk1OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitjbGFzcyBDb29raWVzU3RyYXRlZ3k7CiBjbGFzcyBIVFRQSGVhZGVyTWFwOworY2xhc3Mg
TmV0d29ya1N0b3JhZ2VTZXNzaW9uOwogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKIApAQCAtNzcsOCArNzksMTAgQEAgc3RydWN0IENhY2hlQ29udHJvbERp
cmVjdGl2ZXMgewogfTsKIFdFQkNPUkVfRVhQT1JUIENhY2hlQ29udHJvbERpcmVjdGl2ZXMgcGFy
c2VDYWNoZUNvbnRyb2xEaXJlY3RpdmVzKGNvbnN0IEhUVFBIZWFkZXJNYXAmKTsKIAotV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IGNvbGxlY3RWYXJ5aW5n
UmVxdWVzdEhlYWRlcnMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYsIFBBTDo6U2Vzc2lvbklEID0gUEFMOjpTZXNzaW9uSUQ6OmRlZmF1bHRTZXNzaW9uSUQo
KSk7Ci1XRUJDT1JFX0VYUE9SVCBib29sIHZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhjb25z
dCBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4mIHZhcnlpbmdSZXF1ZXN0SGVhZGVy
cywgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUEFMOjpTZXNzaW9uSUQgPSBQQUw6OlNlc3Npb25J
RDo6ZGVmYXVsdFNlc3Npb25JRCgpKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8
U3RyaW5nLCBTdHJpbmc+PiBjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKE5ldHdvcmtTdG9y
YWdlU2Vzc2lvbiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKTsKK1dFQkNPUkVfRVhQT1JUIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBj
b2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKENvb2tpZXNTdHJhdGVneSYsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBQQUw6OlNlc3Npb25J
RCYpOworV0VCQ09SRV9FWFBPUlQgYm9vbCB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoTmV0
d29ya1N0b3JhZ2VTZXNzaW9uJiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmlu
Zz4+JiB2YXJ5aW5nUmVxdWVzdEhlYWRlcnMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOworV0VC
Q09SRV9FWFBPUlQgYm9vbCB2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoQ29va2llc1N0cmF0
ZWd5JiwgY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB2YXJ5aW5nUmVx
dWVzdEhlYWRlcnMsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFBBTDo6U2Vzc2lvbklE
Jik7CiAKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTdGF0dXNDb2RlQ2FjaGVhYmxlQnlEZWZhdWx0
KGludCBzdGF0dXNDb2RlKTsKIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNTdGF0dXNDb2RlUG90ZW50
aWFsbHlDYWNoZWFibGUoaW50IHN0YXR1c0NvZGUpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIz
OTk3MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTktMDEtMTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Vi
a2l0Lm9yZz4KKworICAgICAgICBTcGxpdCBoZWFkZXJWYWx1ZUZvclZhcnkgaW50byBzcGVjaWFs
aXplZCBmdW5jdGlvbnMgZm9yIE5ldHdvcmtQcm9jZXNzIGFuZCBXZWJQcm9jZXNzL1dlYktpdExl
Z2FjeQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkz
NDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6Om1ha2VVc2VEZWNpc2lvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6Q2FjaGU6OnJldHJpZXZlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpD
YWNoZTo6bWFrZUVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6
bWFrZVJlZGlyZWN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hl
Ojp1cGRhdGUpOgorCiAyMDE5LTAxLTE0ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBw
bGUuY29tPgogCiAgICAgICAgIEZpeCBhIHN0eWxlIG1pc3Rha2UgaW4gUGFnZUNsaWVudEltcGxN
YWMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZS5jcHAJKHJldmlzaW9uIDIzOTk1OSkKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxLDcg
KzE5MSw3IEBAIHN0YXRpYyBVc2VEZWNpc2lvbiBtYWtlVXNlRGVjaXNpb24oY29uc3QKICAgICBp
ZiAocmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkgJiYgIWVudHJ5LnJlZGlyZWN0UmVxdWVzdCgpKQog
ICAgICAgICByZXR1cm4gVXNlRGVjaXNpb246OlZhbGlkYXRlOwogCi0gICAgaWYgKCFXZWJDb3Jl
Ojp2ZXJpZnlWYXJ5aW5nUmVxdWVzdEhlYWRlcnMoZW50cnkudmFyeWluZ1JlcXVlc3RIZWFkZXJz
KCksIHJlcXVlc3QpKQorICAgIGlmICghV2ViQ29yZTo6dmVyaWZ5VmFyeWluZ1JlcXVlc3RIZWFk
ZXJzKFdlYkNvcmU6Ok5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVmYXVsdFN0b3JhZ2VTZXNzaW9u
KCksIGVudHJ5LnZhcnlpbmdSZXF1ZXN0SGVhZGVycygpLCByZXF1ZXN0KSkKICAgICAgICAgcmV0
dXJuIFVzZURlY2lzaW9uOjpOb0R1ZVRvVmFyeWluZ0hlYWRlck1pc21hdGNoOwogCiAgICAgLy8g
V2UgbmV2ZXIgcmV2YWxpZGF0ZSBpbiB0aGUgY2FzZSBvZiBhIGhpc3RvcnkgbmF2aWdhdGlvbi4K
QEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIENhY2hlOjpyZXRyaWV2ZShjb25zdCBXZWJDb3JlOjpS
ZXNvCiAgICAgaWYgKGNhblVzZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uICYmIG1fc3BlY3VsYXRp
dmVMb2FkTWFuYWdlci0+Y2FuUmV0cmlldmUoc3RvcmFnZUtleSwgcmVxdWVzdCwgZnJhbWVJRCkp
IHsKICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyLT5yZXRyaWV2ZShzdG9yYWdlS2V5
LCBbcmVxdWVzdCwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgaW5mbyA9IFdURk1vdmUoaW5mbyldKHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gZW50cnkpIG11
dGFibGUgewogICAgICAgICAgICAgaW5mby53YXNTcGVjdWxhdGl2ZUxvYWQgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKGVudHJ5ICYmIFdlYkNvcmU6OnZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVy
cyhlbnRyeS0+dmFyeWluZ1JlcXVlc3RIZWFkZXJzKCksIHJlcXVlc3QpKQorICAgICAgICAgICAg
aWYgKGVudHJ5ICYmIFdlYkNvcmU6OnZlcmlmeVZhcnlpbmdSZXF1ZXN0SGVhZGVycyhXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBlbnRyeS0+
dmFyeWluZ1JlcXVlc3RIZWFkZXJzKCksIHJlcXVlc3QpKQogICAgICAgICAgICAgICAgIGNvbXBs
ZXRlUmV0cmlldmUoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIFdURk1vdmUoZW50cnkpLCBp
bmZvKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBjb21wbGV0ZVJldHJpZXZl
KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBudWxscHRyLCBpbmZvKTsKQEAgLTM2NCwxMiAr
MzY0LDEyIEBAIHZvaWQgQ2FjaGU6OmNvbXBsZXRlUmV0cmlldmUoUmV0cmlldmVDb20KICAgICAK
IHN0ZDo6dW5pcXVlX3B0cjxFbnRyeT4gQ2FjaGU6Om1ha2VFbnRyeShjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlLCBSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSkK
IHsKLSAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVl
c3QpLCByZXNwb25zZSwgV1RGTW92ZShyZXNwb25zZURhdGEpLCBXZWJDb3JlOjpjb2xsZWN0VmFy
eWluZ1JlcXVlc3RIZWFkZXJzKHJlcXVlc3QsIHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIHN0ZDo6
bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNoZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1v
dmUocmVzcG9uc2VEYXRhKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBy
ZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8RW50cnk+IENhY2hlOjpt
YWtlUmVkaXJlY3RFbnRyeShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmIHJlZGlyZWN0UmVxdWVzdCkKIHsKLSAgICByZXR1cm4gc3RkOjpt
YWtlX3VuaXF1ZTxFbnRyeT4obWFrZUNhY2hlS2V5KHJlcXVlc3QpLCByZXNwb25zZSwgcmVkaXJl
Y3RSZXF1ZXN0LCBXZWJDb3JlOjpjb2xsZWN0VmFyeWluZ1JlcXVlc3RIZWFkZXJzKHJlcXVlc3Qs
IHJlc3BvbnNlKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8RW50cnk+KG1ha2VDYWNo
ZUtleShyZXF1ZXN0KSwgcmVzcG9uc2UsIHJlZGlyZWN0UmVxdWVzdCwgV2ViQ29yZTo6Y29sbGVj
dFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhXZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRl
ZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCByZXF1ZXN0LCByZXNwb25zZSkpOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8RW50cnk+IENhY2hlOjpzdG9yZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBS
ZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIHJlc3BvbnNlRGF0YSwgRnVuY3Rpb248dm9p
ZChNYXBwZWRCb2R5Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC00NTMsNyArNDUzLDcgQEAg
c3RkOjp1bmlxdWVfcHRyPEVudHJ5PiBDYWNoZTo6dXBkYXRlKGNvbgogICAgIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UgPSBleGlzdGluZ0VudHJ5LnJlc3BvbnNlKCk7CiAgICAg
V2ViQ29yZTo6dXBkYXRlUmVzcG9uc2VIZWFkZXJzQWZ0ZXJSZXZhbGlkYXRpb24ocmVzcG9uc2Us
IHZhbGlkYXRpbmdSZXNwb25zZSk7CiAKLSAgICBhdXRvIHVwZGF0ZUVudHJ5ID0gc3RkOjptYWtl
X3VuaXF1ZTxFbnRyeT4oZXhpc3RpbmdFbnRyeS5rZXkoKSwgcmVzcG9uc2UsIGV4aXN0aW5nRW50
cnkuYnVmZmVyKCksIFdlYkNvcmU6OmNvbGxlY3RWYXJ5aW5nUmVxdWVzdEhlYWRlcnMob3JpZ2lu
YWxSZXF1ZXN0LCByZXNwb25zZSkpOworICAgIGF1dG8gdXBkYXRlRW50cnkgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEVudHJ5PihleGlzdGluZ0VudHJ5LmtleSgpLCByZXNwb25zZSwgZXhpc3RpbmdFbnRy
eS5idWZmZXIoKSwgV2ViQ29yZTo6Y29sbGVjdFZhcnlpbmdSZXF1ZXN0SGVhZGVycyhXZWJDb3Jl
OjpOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlZmF1bHRTdG9yYWdlU2Vzc2lvbigpLCBvcmlnaW5h
bFJlcXVlc3QsIHJlc3BvbnNlKSk7CiAgICAgYXV0byB1cGRhdGVSZWNvcmQgPSB1cGRhdGVFbnRy
eS0+ZW5jb2RlQXNTdG9yYWdlUmVjb3JkKCk7CiAKICAgICBtX3N0b3JhZ2UtPnN0b3JlKHVwZGF0
ZVJlY29yZCwgeyB9KTsK
</data>
<flag name="review"
          id="375930"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>