<?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>47507</bug_id>
          
          <creation_ts>2010-10-11 15:10:14 -0700</creation_ts>
          <short_desc>Loader cleanup: Merge CachePolicy and ResourceRequestCachePolicy</short_desc>
          <delta_ts>2011-01-12 16:37:11 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nate Chapin">japhet</reporter>
          <assigned_to name="Nate Chapin">japhet</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>292690</commentid>
    <comment_count>0</comment_count>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-10-11 15:10:14 -0700</bug_when>
    <thetext>It seems like these enums are almost equivalent, but not quite overlapping.  Currently, ResourceRequestCachePolicy overloads ReloadIgnoringCacheData to mean both a typical reload (revalidate all cached items) and shift-reload (remove all items from cache and fetch everything again).  If these were split out, CachePolicy would be a subset of ResourceRequestCachePolicy and could presumably be deleted.  It would also allow us to remove the overloaded definition of a reload (see, e.g., http://trac.webkit.org/browser/trunk/WebCore/loader/FrameLoader.cpp?rev=69432#L1585).

Does this seem reasonable?  Will post a patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292709</commentid>
    <comment_count>1</comment_count>
      <attachid>70479</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2010-10-11 15:26:49 -0700</bug_when>
    <thetext>Created attachment 70479
patch

I tried to find all the places where ResourceRequestCachePolicy is used in the webkit repo and disambiguate between ReloadIgnoringCacheData and RevalidateCacheData, but I make no promises that I found al of them :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292713</commentid>
    <comment_count>2</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-11 15:31:09 -0700</bug_when>
    <thetext>&gt; I make no promises that I found al of them :)

You can rename enum and the compiler will help you find them all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292719</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-10-11 15:42:32 -0700</bug_when>
    <thetext>I&apos;m not sure if these should be the same. One policy is about what is being sent in requests over the wire, and another is how WebCore handles cached data that it has.

There is a lot of confusion because CFNetwork cache behaves like a remote caching proxy, so it&apos;s logically &quot;over the wire&quot;, although it really isn&apos;t. But there&apos;s also WebCore cache, which can have different policies. It can also encode different WebCore responses to the same network responses (e.g. &quot;just use stale data&quot; vs. &quot;use it, but warn the user&quot; - there is no difference for ResourceRequest, but there is for WebCore).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292782</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-11 17:25:55 -0700</bug_when>
    <thetext>Attachment 70479 did not build on chromium:
Build output: http://queues.webkit.org/results/4353022</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292894</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2010-10-12 02:59:57 -0700</bug_when>
    <thetext>I agree with Alexey. CachePolicy (which should perhaps become CachedResource::CachePolicy) is about WebCore internal caching. Using ResourceRequestCachePolicy in this level seems wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>333414</commentid>
    <comment_count>6</comment_count>
      <attachid>70479</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-12 16:36:59 -0800</bug_when>
    <thetext>Comment on attachment 70479
patch

Sounds like we shouldn&apos;t do this change.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70479</attachid>
            <date>2010-10-11 15:26:49 -0700</date>
            <delta_ts>2011-01-12 16:36:59 -0800</delta_ts>
            <desc>patch</desc>
            <filename>cache.txt</filename>
            <type>text/plain</type>
            <size>25708</size>
            <attacher name="Nate Chapin">japhet</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjkzNDcpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMTAtMDggIE5hdGUg
Q2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgCisgICAgICAgIEFkZCBSZXZhbGlkYXRlQ2FjaGVEYXRhIHRvIFdlYlVS
TFJlcXVlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD00NzUwNworCisgICAgICAgICogcHVibGljL1dlYlVSTFJlcXVlc3QuaDoKKwogMjAxMC0xMC0w
NyAgRGFuaWVsIENoZW5nICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBUb255IENoYW5nLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1
ZXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1ZXN0
LmgJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJVUkxSZXF1
ZXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAKICAgICAgICAgUmVsb2FkSWdu
b3JpbmdDYWNoZURhdGEsIC8vIHJlbG9hZAogICAgICAgICBSZXR1cm5DYWNoZURhdGFFbHNlTG9h
ZCwgLy8gYmFjay9mb3J3YXJkIG9yIGVuY29kaW5nIGNoYW5nZSAtIGFsbG93IHN0YWxlIGRhdGEK
ICAgICAgICAgUmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsIC8vIHJlc3VsdHMgb2YgYSBwb3N0IC0g
YWxsb3cgc3RhbGUgZGF0YSBhbmQgb25seSB1c2UgY2FjaGUKKyAgICAgICAgUmV2YWxpZGF0ZUNh
Y2hlRGF0YSA9IFJldHVybkNhY2hlRGF0YURvbnRMb2FkICsgMiwgLy8gcmV2YWxpZGF0ZSB0aGUg
aXRlbXMgaW4gdGhlIGNhY2hlIGJlZm9yZSB1c2luZyB0aGVtCiAgICAgfTsKIAogICAgIGVudW0g
VGFyZ2V0VHlwZSB7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNjkzNDcpCisrKyBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEwLTEwLTA4ICBOYXRlIENo
YXBpbiAgPGphcGhldEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIFJldmFsaWRhdGVDYWNoZURhdGEgdG8gSVdlYlVSTFJl
cXVlc3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NzUwNworCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViVVJMUmVxdWVzdC5pZGw6CisKIDIwMTAt
MTAtMDQgIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBQ
cmV2ZW50IGFuIGFzc2VydGlvbiBmYWlsdXJlIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIHByb3Rl
Y3Rpb24gc3BhY2UKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViVVJMUmVxdWVzdC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJVUkxSZXF1ZXN0Lmlk
bAkocmV2aXNpb24gNjkzNDcpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYlVSTFJlcXVl
c3QuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw4IEBACiAgICAgV2ViVVJMUmVxdWVz
dFVzZVByb3RvY29sQ2FjaGVQb2xpY3ksCiAgICAgV2ViVVJMUmVxdWVzdFJlbG9hZElnbm9yaW5n
Q2FjaGVEYXRhLAogICAgIFdlYlVSTFJlcXVlc3RSZXR1cm5DYWNoZURhdGFFbHNlTG9hZCwKLSAg
ICBXZWJVUkxSZXF1ZXN0UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQKKyAgICBXZWJVUkxSZXF1ZXN0
UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQsCisgICAgV2ViVVJMUmVxdWVzdFJldmFsaWRhdGVDYWNo
ZURhdGEgPSBXZWJVUkxSZXF1ZXN0UmV0dXJuQ2FjaGVEYXRhRG9udExvYWQgKyAyCiB9IFdlYlVS
TFJlcXVlc3RDYWNoZVBvbGljeTsKIAogWwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY5NTI5KQorKysgV2ViQ29yZS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0xMC0xMSAgTmF0
ZSBDaGFwaW4gIDxqYXBoZXRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSBDYWNoZVBvbGljeS5oIGFuZCB1c2UgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgaW5zdGVhZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3NTA3CisKKyAgICAgICAgUmVmYWN0b3Igb25seSwg
bm8gbmV3IHRlc3RzLgorCisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2Vi
Q29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBsb2Fk
ZXIvQ2FjaGUuaDoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVQb2xpY3kuaDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6Om11c3RSZXZhbGlkYXRlKToKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVz
b3VyY2UuaDoKKyAgICAgICAgKiBsb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNoZWNrRm9yUmVsb2FkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpjYWNoZVBvbGljeSk6CisgICAg
ICAgICogbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGFuZ2VMb2Nh
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
cmVsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hl
UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1Rv
UmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bmF2aWdhdGVUb0RpZmZl
cmVudERvY3VtZW50KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvbG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRlcjo6SG9zdDo6c2Vy
dmVQZW5kaW5nUmVxdWVzdHMpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VS
ZXF1ZXN0QmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6dG9OZXR3b3JrUmVxdWVzdCk6CisKIDIwMTAt
MTAtMTEgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjM2NzksMTAgKzIzNjc5LDYgQEAKIAkJ
CQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9hZGVy
XENhY2hlUG9saWN5LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCiAJCQkJUmVs
YXRpdmVQYXRoPSIuLlxsb2FkZXJcQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCINCiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9H
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMTg4OSw3ICsxODg5LDYgQEAKIAlXZWJD
b3JlL2xvYWRlci9DYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBcCiAJV2ViQ29yZS9sb2FkZXIvQ2Fj
aGVkWFNMU3R5bGVTaGVldC5oIFwKIAlXZWJDb3JlL2xvYWRlci9DYWNoZS5oIFwKLQlXZWJDb3Jl
L2xvYWRlci9DYWNoZVBvbGljeS5oIFwKIAlXZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vz
c0NvbnRyb2wuY3BwIFwKIAlXZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
aCBcCiAJV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAg
XApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlUmVxdWVzdFF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3VyY2VSZXF1
ZXN0UXQuY3BwCShyZXZpc2lvbiA2OTM0NykKKysrIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9x
dC9SZXNvdXJjZVJlcXVlc3RRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDkgQEAK
ICAgICBjYXNlIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhOgogICAgICAgICByZXF1ZXN0LnNldEF0
dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNhY2hlTG9hZENvbnRyb2xBdHRyaWJ1dGUsIFFOZXR3
b3JrUmVxdWVzdDo6QWx3YXlzTmV0d29yayk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUmV2
YWxpZGF0ZUNhY2hlRGF0YToKKyAgICAgICAgcmVxdWVzdC5zZXRBdHRyaWJ1dGUoUU5ldHdvcmtS
ZXF1ZXN0OjpDYWNoZUxvYWRDb250cm9sQXR0cmlidXRlLCBRTmV0d29ya1JlcXVlc3Q6OlByZWZl
ck5ldHdvcmspOworICAgICAgICBicmVhazsKICAgICBjYXNlIFJldHVybkNhY2hlRGF0YUVsc2VM
b2FkOgogICAgICAgICByZXF1ZXN0LnNldEF0dHJpYnV0ZShRTmV0d29ya1JlcXVlc3Q6OkNhY2hl
TG9hZENvbnRyb2xBdHRyaWJ1dGUsIFFOZXR3b3JrUmVxdWVzdDo6UHJlZmVyQ2FjaGUpOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9S
ZXNvdXJjZUhhbmRsZU1hYy5tbQkocmV2aXNpb24gNjkzNDcpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yODks
NyArMjg5LDcgQEAKICAgICAvLyBBIGNvbmRpdGlvbmFsIHJlcXVlc3Qgc2VudCBieSBXZWJDb3Jl
IChlLmcuIHRvIHVwZGF0ZSBhcHBjYWNoZSkgY2FuIGJlIGZvciBhIHJlc291cmNlIHRoYXQgaXMg
bm90IGNhY2hlYWJsZSBieSBOU1VSTENvbm5lY3Rpb24sCiAgICAgLy8gd2hpY2ggY2FuIGdldCBj
b25mdXNlZCBhbmQgZmFpbCB0byBsb2FkIGl0IGluIHRoaXMgY2FzZS4KICAgICBpZiAoZmlyc3RS
ZXF1ZXN0KCkuaXNDb25kaXRpb25hbCgpKQotICAgICAgICBmaXJzdFJlcXVlc3QoKS5zZXRDYWNo
ZVBvbGljeShSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSk7CisgICAgICAgIGZpcnN0UmVxdWVzdCgp
LnNldENhY2hlUG9saWN5KFJldmFsaWRhdGVDYWNoZURhdGEpOwogI2VuZGlmCiAKICAgICBkLT5t
X25lZWRzU2l0ZVNwZWNpZmljUXVpcmtzID0gY29udGV4dC0+bmVlZHNTaXRlU3BlY2lmaWNRdWly
a3MoKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuaAkocmV2aXNpb24gNjkzNDcpCisrKyBXZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXF1ZXN0QmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw4IEBACiAgICAg
ICAgIFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhLCAvLyByZWxvYWQKICAgICAgICAgUmV0dXJuQ2Fj
aGVEYXRhRWxzZUxvYWQsIC8vIGJhY2svZm9yd2FyZCBvciBlbmNvZGluZyBjaGFuZ2UgLSBhbGxv
dyBzdGFsZSBkYXRhCiAgICAgICAgIFJldHVybkNhY2hlRGF0YURvbnRMb2FkLCAvLyByZXN1bHRz
IG9mIGEgcG9zdCAtIGFsbG93IHN0YWxlIGRhdGEgYW5kIG9ubHkgdXNlIGNhY2hlCisgICAgICAg
IC8vICcgKyAyJyBiZWNhdXNlIG1hYyBwbGF0Zm9ybSBkZXBlbmRzIG9uIHRoZSBvcmRlcmluZyBv
ZiB0aGlzIGVudW0gbWF0Y2hpbmcgTlNVUkxSZXF1ZXN0Q2FjaGVQb2xpY3kuCisgICAgICAgIFJl
dmFsaWRhdGVDYWNoZURhdGEgPSBSZXR1cm5DYWNoZURhdGFEb250TG9hZCArIDIsIC8vIHJldmFs
aWRhdGUgdGhlIGl0ZW1zIGluIHRoZSBjYWNoZSBiZWZvcmUgdXNpbmcgdGhlbQogICAgIH07CiAK
ICAgICBjb25zdCBpbnQgdW5zcGVjaWZpZWRUaW1lb3V0SW50ZXJ2YWwgPSBJTlRfTUFYOwpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5
cGkJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29w
eSkKQEAgLTE5OTksNyArMTk5OSw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL0NhY2hlLmNwcCcs
CiAgICAgICAgICAgICAnbG9hZGVyL0NhY2hlLmgnLAogICAgICAgICAgICAgJ2xvYWRlci9DYWNo
ZWRNZXRhZGF0YS5oJywKLSAgICAgICAgICAgICdsb2FkZXIvQ2FjaGVQb2xpY3kuaCcsCiAgICAg
ICAgICAgICAnbG9hZGVyL0NhY2hlZENTU1N0eWxlU2hlZXQuY3BwJywKICAgICAgICAgICAgICds
b2FkZXIvQ2FjaGVkQ1NTU3R5bGVTaGVldC5oJywKICAgICAgICAgICAgICdsb2FkZXIvQ2FjaGVk
Rm9udC5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3OTksNyArMjc5OSw2IEBACiAJCTkzRjE5OTIx
MDgyNDVFNTkwMDFFOUFCQyAvKiBYTUxEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjUyM0QzMEEwMkRFNDQ3NjAxODYzNUNBIC8q
IFhNTERvY3VtZW50UGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTNGMTk5MkYwODI0NUU1OTAwMUU5QUJDIC8qIEN1cnNvci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2ODQwMkRFM0I4
NjAxRUE0MTIyIC8qIEN1cnNvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRjE5OTRGMDgyNDVFNTkwMDFFOUFCQyAvKiBTZXR0aW5ncy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU4Nzg2M0EwMkRF
M0ExNDAxRUE0MTIyIC8qIFNldHRpbmdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5NTAwODI0NUU1OTAwMUU5QUJDIC8qIENhY2hlUG9s
aWN5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTg3
ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk2MzA4MjQ1RTU5MDAxRTlBQkMg
LyogU1NMS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNTg3ODY2MjAyREUzQjExMDFFQTQxMjIgLyogU1NMS2V5R2VuZXJhdG9yLmgg
Ki87IH07CiAJCTkzRjE5OTZEMDgyNDVFNTkwMDFFOUFCQyAvKiBEZXByZWNhdGVkUHRyTGlzdElt
cGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4
NTE1MDJERTM3NTkwMUVBNDEyMiAvKiBEZXByZWNhdGVkUHRyTGlzdEltcGwuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTk4MjA4MjQ1RTU5
MDAxRTlBQkMgLyogRGVwcmVjYXRlZFB0ckxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1ODc4Njk5MDJERTNCODYwMUVBNDEyMiAvKiBEZXByZWNh
dGVkUHRyTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0xMTUzOCw3ICsxMTUzNyw2IEBACiAJCUY1ODc4NTU0MDJERTM3NTkwMUVBNDEyMiAv
KiBXZWJDb3JlVmlld0ZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZVZpZXdGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODU1NTAyREUzNzU5
MDFFQTQxMjIgLyogV2ViQ29yZVZpZXdGYWN0b3J5Lm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkNvcmVWaWV3RmFjdG9yeS5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4
Nzg2M0EwMkRFM0ExNDAxRUE0MTIyIC8qIFNldHRpbmdzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNldHRpbmdzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwotCQlGNTg3ODY0OTAyREUz
QTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FjaGVQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCUY1ODc4NjYyMDJERTNCMTEw
MUVBNDEyMiAvKiBTU0xLZXlHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1NMS2V5R2VuZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlGNTg3ODY4NDAyREUz
Qjg2MDFFQTQxMjIgLyogQ3Vyc29yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEN1cnNvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJX
aWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRjU4Nzg2OTkwMkRFM0I4NjAxRUE0MTIyIC8q
IERlcHJlY2F0ZWRQdHJMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IERlcHJlY2F0ZWRQdHJMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTcwODYsNyArMTcwODQsNiBA
QAogCQkJCUJDQjE2QzBCMDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCAqLywKIAkJ
CQlCQ0IxNkMwRTA5NzlDM0JEMDA0Njc3NDEgLyogQ2FjaGVkWFNMU3R5bGVTaGVldC5jcHAgKi8s
CiAJCQkJQkNCMTZDMEYwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuaCAq
LywKLQkJCQlGNTg3ODY0OTAyREUzQTlBMDFFQTQxMjIgLyogQ2FjaGVQb2xpY3kuaCAqLywKIAkJ
CQlFMUM0MTYxNjBGNjU2MzE4MDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNw
cCAqLywKIAkJCQlFMUM0MTYxMTBGNjU2MkZEMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3ND
b250cm9sLmggKi8sCiAJCQkJRTFDNDE1REQwRjY1NUQ3QzAwOTJEMkZCIC8qIENyb3NzT3JpZ2lu
UHJlZmxpZ2h0UmVzdWx0Q2FjaGUuY3BwICovLApAQCAtMTgzODIsNyArMTgzNzksNiBAQAogCQkJ
CUJDQjE2QzI0MDk3OUMzQkQwMDQ2Nzc0MSAvKiBDYWNoZWRTY3JpcHQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDRDUzMzY0MEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNCMTZDMjgwOTc5QzNCRDAwNDY3NzQxIC8qIENh
Y2hlZFhTTFN0eWxlU2hlZXQuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OTUwMDgyNDVFNTkw
MDFFOUFCQyAvKiBDYWNoZVBvbGljeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkU0RTkxQUQxMEY3
RkIzMTAwQTI3NzlDIC8qIENhbnZhc0NvbnRleHRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTQ4NEZDMjEwMkNGMjNDMDAxODdERDMgLyogQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQ5NDg0RkM1MTAyQ0YyM0MwMDE4N0REMyAvKiBDYW52YXNQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHAJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NywyMyArOTcsMTkgQEAKICAgICAgICAgcmV0dXJu
OwogCiAgICAgc3dpdGNoIChjYWNoZVBvbGljeSgpKSB7Ci0gICAgY2FzZSBDYWNoZVBvbGljeVZl
cmlmeToKLSAgICAgICAgaWYgKCFleGlzdGluZy0+bXVzdFJldmFsaWRhdGUoQ2FjaGVQb2xpY3lW
ZXJpZnkpKQorICAgIGNhc2UgVXNlUHJvdG9jb2xDYWNoZVBvbGljeToKKyAgICAgICAgaWYgKCFl
eGlzdGluZy0+bXVzdFJldmFsaWRhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
Y2FjaGUoKS0+cmV2YWxpZGF0ZVJlc291cmNlKGV4aXN0aW5nLCB0aGlzKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBDYWNoZVBvbGljeUNhY2hlOgotICAgICAgICBpZiAoIWV4aXN0aW5nLT5t
dXN0UmV2YWxpZGF0ZShDYWNoZVBvbGljeUNhY2hlKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgY2FjaGUoKS0+cmV2YWxpZGF0ZVJlc291cmNlKGV4aXN0aW5nLCB0aGlzKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBDYWNoZVBvbGljeVJlbG9hZDoKKyAgICBjYXNlIFJlbG9hZEln
bm9yaW5nQ2FjaGVEYXRhOgogICAgICAgICBjYWNoZSgpLT5yZW1vdmUoZXhpc3RpbmcpOyAgICAg
ICAgCiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2FjaGVQb2xpY3lSZXZhbGlkYXRlOgorICAg
IGNhc2UgUmV2YWxpZGF0ZUNhY2hlRGF0YToKICAgICAgICAgY2FjaGUoKS0+cmV2YWxpZGF0ZVJl
c291cmNlKGV4aXN0aW5nLCB0aGlzKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDYWNoZVBv
bGljeUFsbG93U3RhbGU6CisgICAgY2FzZSBSZXR1cm5DYWNoZURhdGFFbHNlTG9hZDoKKyAgICBj
YXNlIFJldHVybkNhY2hlRGF0YURvbnRMb2FkOgogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC0zMjIsOSArMzE4LDkgQEAKICAgICB9CiB9CiAKLUNhY2hlUG9saWN5IENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYWNoZVBvbGljeSgpIGNvbnN0CitSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FjaGVQb2xpY3koKSBjb25zdAogewotICAgIHJldHVybiBm
cmFtZSgpID8gZnJhbWUoKS0+bG9hZGVyKCktPnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSA6IENh
Y2hlUG9saWN5VmVyaWZ5OworICAgIHJldHVybiBmcmFtZSgpID8gZnJhbWUoKS0+bG9hZGVyKCkt
PnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKSA6IFVzZVByb3RvY29sQ2FjaGVQb2xpY3k7CiB9CiAK
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbW92ZUNhY2hlZFJlc291cmNlKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSkgY29uc3QKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDY5MzQ3KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNjgsNyArMjY4LDcgQEAKIHsKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3QobV9m
cmFtZSk7CiAKLSAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZy
ZXNoID8gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KTsK
KyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8gUmV2
YWxpZGF0ZUNhY2hlRGF0YSA6IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpOwogICAgIAogICAgIHVy
bFNlbGVjdGVkKHJlcXVlc3QsICJfc2VsZiIsIDAsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0Zvcndh
cmRMaXN0LCB1c2VyR2VzdHVyZSwgU2VuZFJlZmVycmVyLCBSZXBsYWNlRG9jdW1lbnRJZkphdmFT
Y3JpcHRVUkwpOwogfQpAQCAtMTI3MSw2ICsxMjcxLDggQEAKICAgICAKICAgICBGcmFtZUxvYWRU
eXBlIGxvYWRUeXBlOwogICAgIGlmIChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLmNhY2hlUG9s
aWN5KCkgPT0gUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpCisgICAgICAgIGxvYWRUeXBlID0gRnJh
bWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW47CisgICAgZWxzZSBpZiAocmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS5jYWNoZVBvbGljeSgpID09IFJldmFsaWRhdGVDYWNoZURhdGEpCiAgICAgICAg
IGxvYWRUeXBlID0gRnJhbWVMb2FkVHlwZVJlbG9hZDsKICAgICBlbHNlIGlmIChsb2NrQmFja0Zv
cndhcmRMaXN0KQogICAgICAgICBsb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGVSZWRpcmVjdFdpdGhM
b2NrZWRCYWNrRm9yd2FyZExpc3Q7CkBAIC0xMzA1LDggKzEzMDcsMTAgQEAKICAgICAgICAgYWRk
SFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHJlZmVycmVyT3JpZ2luLT50b1N0cmluZygpKTsK
ICAgICB9CiAgICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVlc3QocmVxdWVzdCwgbmV3TG9hZFR5cGUs
IHRydWUsIGV2ZW50IHx8IGlzRm9ybVN1Ym1pc3Npb24pOwotICAgIGlmIChuZXdMb2FkVHlwZSA9
PSBGcmFtZUxvYWRUeXBlUmVsb2FkIHx8IG5ld0xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxv
YWRGcm9tT3JpZ2luKQorICAgIGlmIChuZXdMb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2Fk
RnJvbU9yaWdpbikKICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSk7CisgICAgZWxzZSBpZiAobmV3TG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJl
bG9hZCkKKyAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXZhbGlkYXRlQ2FjaGVEYXRh
KTsKIAogICAgIEFTU0VSVChuZXdMb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlU2FtZSk7CiAKQEAg
LTE0MTEsNyArMTQxNSw3IEBACiAgICAgRnJhbWVMb2FkVHlwZSB0eXBlOwogCiAgICAgaWYgKHNo
b3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KG5ld0RvY3VtZW50TG9hZGVyLT5vcmlnaW5hbFJl
cXVlc3QoKS51cmwoKSkpIHsKLSAgICAgICAgci5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmlu
Z0NhY2hlRGF0YSk7CisgICAgICAgIHIuc2V0Q2FjaGVQb2xpY3koUmV2YWxpZGF0ZUNhY2hlRGF0
YSk7CiAgICAgICAgIHR5cGUgPSBGcmFtZUxvYWRUeXBlU2FtZTsKICAgICB9IGVsc2UKICAgICAg
ICAgdHlwZSA9IEZyYW1lTG9hZFR5cGVTdGFuZGFyZDsKQEAgLTE1ODEsOCArMTU4NSw3IEBACiAK
ICAgICBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QgPSBsb2FkZXItPnJlcXVlc3QoKTsKIAotICAg
IC8vIEZJWE1FOiBXZSBkb24ndCBoYXZlIGEgbWVjaGFuaXNtIHRvIHJldmFsaWRhdGUgdGhlIG1h
aW4gcmVzb3VyY2Ugd2l0aG91dCByZWxvYWRpbmcgYXQgdGhlIG1vbWVudC4KLSAgICByZXF1ZXN0
LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKTsKKyAgICByZXF1ZXN0LnNl
dENhY2hlUG9saWN5KFJldmFsaWRhdGVDYWNoZURhdGEpOwogCiAgICAgLy8gSWYgd2UncmUgYWJv
dXQgdG8gcmUtcG9zdCwgc2V0IHVwIGFjdGlvbiBzbyB0aGUgYXBwbGljYXRpb24gY2FuIHdhcm4g
dGhlIHVzZXIuCiAgICAgaWYgKHJlcXVlc3QuaHR0cE1ldGhvZCgpID09ICJQT1NUIikKQEAgLTIy
ODksMzUgKzIyOTIsMjQgQEAKICAgICByZXR1cm4gbV9sb2FkVHlwZTsKIH0KICAgICAKLUNhY2hl
UG9saWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3QKK1Jlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IEZyYW1lTG9hZGVyOjpzdWJyZXNvdXJjZUNhY2hlUG9saWN5
KCkgY29uc3QKIHsKICAgICBpZiAobV9pc0NvbXBsZXRlKQotICAgICAgICByZXR1cm4gQ2FjaGVQ
b2xpY3lWZXJpZnk7CisgICAgICAgIHJldHVybiBVc2VQcm90b2NvbENhY2hlUG9saWN5OwogCiAg
ICAgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4pCi0gICAg
ICAgIHJldHVybiBDYWNoZVBvbGljeVJlbG9hZDsKKyAgICAgICAgcmV0dXJuIFJlbG9hZElnbm9y
aW5nQ2FjaGVEYXRhOwogCiAgICAgaWYgKEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1fZnJhbWUtPnRy
ZWUoKS0+cGFyZW50KCkpIHsKLSAgICAgICAgQ2FjaGVQb2xpY3kgcGFyZW50Q2FjaGVQb2xpY3kg
PSBwYXJlbnRGcmFtZS0+bG9hZGVyKCktPnN1YnJlc291cmNlQ2FjaGVQb2xpY3koKTsKLSAgICAg
ICAgaWYgKHBhcmVudENhY2hlUG9saWN5ICE9IENhY2hlUG9saWN5VmVyaWZ5KQorICAgICAgICBS
ZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeSBwYXJlbnRDYWNoZVBvbGljeSA9IHBhcmVudEZyYW1l
LT5sb2FkZXIoKS0+c3VicmVzb3VyY2VDYWNoZVBvbGljeSgpOworICAgICAgICBpZiAocGFyZW50
Q2FjaGVQb2xpY3kgIT0gVXNlUHJvdG9jb2xDYWNoZVBvbGljeSkKICAgICAgICAgICAgIHJldHVy
biBwYXJlbnRDYWNoZVBvbGljeTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogUE9TVCBkb2N1bWVu
dHMgYXJlIGFsd2F5cyBSZWxvYWRzLCBidXQgdGhlaXIgc3VicmVzb3VyY2VzIHNob3VsZCBzdGls
bCBiZSBSZXZhbGlkYXRlLgotICAgIC8vIElmIHdlIGJyaW5nIHRoZSBDYWNoZVBvbGljeS5oIGFu
ZCBSZXNvdXJjZVJlcXVlc3QgY2FjaGUgcG9saWN5IGVudW1zIGluIHN5bmMgd2l0aCBlYWNoIG90
aGVyIGFuZAotICAgIC8vIHJlbWVtYmVyICJSZXZhbGlkYXRlIiBpbiBSZXNvdXJjZVJlcXVlc3Rz
LCB3ZSBjYW4gcmVtb3ZlIHRoaXMgIlBPU1QiIGNoZWNrIGFuZCByZXR1cm4gZWl0aGVyICJSZWxv
YWQiIAotICAgIC8vIG9yICJSZXZhbGlkYXRlIiBpZiB0aGUgRG9jdW1lbnRMb2FkZXIgd2FzIHJl
cXVlc3RlZCB3aXRoIGVpdGhlci4KLSAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qo
ZG9jdW1lbnRMb2FkZXIoKS0+cmVxdWVzdCgpKTsKLSAgICBpZiAocmVxdWVzdC5jYWNoZVBvbGlj
eSgpID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhICYmICFlcXVhbElnbm9yaW5nQ2FzZShyZXF1
ZXN0Lmh0dHBNZXRob2QoKSwgInBvc3QiKSkKLSAgICAgICAgcmV0dXJuIENhY2hlUG9saWN5UmV2
YWxpZGF0ZTsKLQogICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQpCi0g
ICAgICAgIHJldHVybiBDYWNoZVBvbGljeVJldmFsaWRhdGU7CisgICAgICAgIHJldHVybiBSZXZh
bGlkYXRlQ2FjaGVEYXRhOwogCi0gICAgaWYgKHJlcXVlc3QuY2FjaGVQb2xpY3koKSA9PSBSZXR1
cm5DYWNoZURhdGFFbHNlTG9hZCkKLSAgICAgICAgcmV0dXJuIENhY2hlUG9saWN5QWxsb3dTdGFs
ZTsKLQotICAgIHJldHVybiBDYWNoZVBvbGljeVZlcmlmeTsKKyAgICByZXR1cm4gZG9jdW1lbnRM
b2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkuY2FjaGVQb2xpY3koKTsKIH0KIAogdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGVGb3JUaGlzRnJhbWUoKQpAQCAtMjYzOSwxNyArMjYz
MSwxOSBAQAogICAgIC8vICAgIHBlciByZXF1ZXN0LgogICAgIGlmICghbWFpblJlc291cmNlKSB7
CiAgICAgICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKLSAgICAgICAgICAgIHJlcXVl
c3Quc2V0Q2FjaGVQb2xpY3koUmVsb2FkSWdub3JpbmdDYWNoZURhdGEpOworICAgICAgICAgICAg
cmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZXZhbGlkYXRlQ2FjaGVEYXRhKTsKICAgICAgICAgZWxz
ZSBpZiAoZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nSW5BUElTZW5zZSgpKQogICAgICAgICAg
ICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShkb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVl
c3QoKS5jYWNoZVBvbGljeSgpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmVxdWVzdC5z
ZXRDYWNoZVBvbGljeShVc2VQcm90b2NvbENhY2hlUG9saWN5KTsKLSAgICB9IGVsc2UgaWYgKGxv
YWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWQgfHwgbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlw
ZVJlbG9hZEZyb21PcmlnaW4gfHwgcmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpCisgICAgfSBlbHNl
IGlmIChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkIHx8IHJlcXVlc3QuaXNDb25kaXRp
b25hbCgpKQorICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJldmFsaWRhdGVDYWNoZURh
dGEpOworICAgIGVsc2UgaWYgKGxvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRGcm9tT3Jp
Z2luKQogICAgICAgICByZXF1ZXN0LnNldENhY2hlUG9saWN5KFJlbG9hZElnbm9yaW5nQ2FjaGVE
YXRhKTsKICAgICBlbHNlIGlmIChpc0JhY2tGb3J3YXJkTG9hZFR5cGUobG9hZFR5cGUpICYmIG1f
c3RhdGVNYWNoaW5lLmNvbW1pdHRlZEZpcnN0UmVhbERvY3VtZW50TG9hZCgpICYmICFyZXF1ZXN0
LnVybCgpLnByb3RvY29sSXMoImh0dHBzIikpCiAgICAgICAgIHJlcXVlc3Quc2V0Q2FjaGVQb2xp
Y3koUmV0dXJuQ2FjaGVEYXRhRWxzZUxvYWQpOwogICAgICAgICAKLSAgICBpZiAocmVxdWVzdC5j
YWNoZVBvbGljeSgpID09IFJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhKSB7CisgICAgaWYgKHJlcXVl
c3QuY2FjaGVQb2xpY3koKSA9PSBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSB8fCByZXF1ZXN0LmNh
Y2hlUG9saWN5KCkgPT0gUmV2YWxpZGF0ZUNhY2hlRGF0YSkgewogICAgICAgICBpZiAobG9hZFR5
cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZCkKICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhl
YWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9MCIpOwogICAgICAgICBlbHNlIGlm
IChsb2FkVHlwZSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbikgewpAQCAtMzE5Nyw2
ICszMTkxLDggQEAKICAgICB9IGVsc2UgewogICAgICAgICBzd2l0Y2ggKGxvYWRUeXBlKSB7CiAg
ICAgICAgICAgICBjYXNlIEZyYW1lTG9hZFR5cGVSZWxvYWQ6CisgICAgICAgICAgICAgICAgcmVx
dWVzdC5zZXRDYWNoZVBvbGljeShSZXZhbGlkYXRlQ2FjaGVEYXRhKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgRnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW46
CiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBvbGljeShSZWxvYWRJZ25vcmluZ0Nh
Y2hlRGF0YSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9D
YWNoZWRSZXNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0NhY2hlZFJlc291
cmNlLmgJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9sb2FkZXIvQ2FjaGVkUmVzb3VyY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogI2lmbmRlZiBDYWNoZWRSZXNvdXJj
ZV9oCiAjZGVmaW5lIENhY2hlZFJlc291cmNlX2gKIAotI2luY2x1ZGUgIkNhY2hlUG9saWN5Lmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtMTkwLDcgKzE4OSw3IEBACiAg
ICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlKENhY2hlZFJlc291cmNlSGFuZGxlQmFzZSogaCkgeyBB
U1NFUlQobV9oYW5kbGVDb3VudCA+IDApOyAtLW1faGFuZGxlQ291bnQ7IGlmIChtX3Jlc291cmNl
VG9SZXZhbGlkYXRlKSBtX2hhbmRsZXNUb1JldmFsaWRhdGUucmVtb3ZlKGgpOyBpZiAoIW1faGFu
ZGxlQ291bnQpIGRlbGV0ZUlmUG9zc2libGUoKTsgfQogICAgIAogICAgIGJvb2wgY2FuVXNlQ2Fj
aGVWYWxpZGF0b3IoKSBjb25zdDsKLSAgICBib29sIG11c3RSZXZhbGlkYXRlKENhY2hlUG9saWN5
KSBjb25zdDsKKyAgICBib29sIG11c3RSZXZhbGlkYXRlKCkgY29uc3Q7CiAgICAgYm9vbCBpc0Nh
Y2hlVmFsaWRhdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZVRvUmV2YWxpZGF0ZTsgfQog
ICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZVRvUmV2YWxpZGF0ZSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVzb3VyY2VUb1JldmFsaWRhdGU7IH0KICAgICAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuaAkocmV2aXNpb24gNjkzNDcpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw3IEBACiAKICNp
bmNsdWRlICJDYWNoZWRSZXNvdXJjZS5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlSGFuZGxl
LmgiCi0jaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CkBAIC03OSw3ICs3OSw3IEBACiAgICAgYm9vbCBh
dXRvTG9hZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2
b2lkIHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOwogICAgIAotICAgIENhY2hlUG9saWN5IGNhY2hl
UG9saWN5KCkgY29uc3Q7CisgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgY2FjaGVQb2xp
Y3koKSBjb25zdDsKICAgICAKICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsgLy8gQ2FuIGJlIE5V
TEwKICAgICBEb2N1bWVudCogZG9jKCkgY29uc3QgeyByZXR1cm4gbV9kb2M7IH0KSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL0NhY2hlZFJlc291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9DYWNoZWRSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDY5MzQ3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvQ2FjaGVkUmVzb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDcgQEAK
ICAgICByZXR1cm4gIW1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKGxhc3RNb2RpZmllZEhlYWRl
cikuaXNFbXB0eSgpIHx8ICFtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChlVGFnSGVhZGVyKS5p
c0VtcHR5KCk7CiB9CiAgICAgCi1ib29sIENhY2hlZFJlc291cmNlOjptdXN0UmV2YWxpZGF0ZShD
YWNoZVBvbGljeSBjYWNoZVBvbGljeSkgY29uc3QKK2Jvb2wgQ2FjaGVkUmVzb3VyY2U6Om11c3RS
ZXZhbGlkYXRlKCkgY29uc3QKIHsKICAgICBpZiAobV9lcnJvck9jY3VycmVkKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTQ1Miw5ICs0NTIsNiBAQAogICAgIGlmIChtX3Jlc3BvbnNlLmNhY2hl
Q29udHJvbENvbnRhaW5zTm9DYWNoZSgpIHx8IG1fcmVzcG9uc2UuY2FjaGVDb250cm9sQ29udGFp
bnNOb1N0b3JlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgaWYgKGNhY2hlUG9saWN5
ID09IENhY2hlUG9saWN5Q2FjaGUpCi0gICAgICAgIHJldHVybiBtX3Jlc3BvbnNlLmNhY2hlQ29u
dHJvbENvbnRhaW5zTXVzdFJldmFsaWRhdGUoKSAmJiBpc0V4cGlyZWQoKTsKLQogICAgIHJldHVy
biBpc0V4cGlyZWQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9sb2FkZXIvQ2FjaGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9DYWNoZS5oCShyZXZpc2lvbiA2OTM0NykKKysrIFdlYkNv
cmUvbG9hZGVyL0NhY2hlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpZm5k
ZWYgQ2FjaGVfaAogI2RlZmluZSBDYWNoZV9oCiAKLSNpbmNsdWRlICJDYWNoZVBvbGljeS5oIgog
I2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIK
ICNpbmNsdWRlICJsb2FkZXIuaCIKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0NhY2hlUG9saWN5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvQ2FjaGVQb2xpY3kuaAkocmV2aXNpb24gNjkz
NDcpCisrKyBXZWJDb3JlL2xvYWRlci9DYWNoZVBvbGljeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDYgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgQ2FjaGVQb2xp
Y3lfaAotI2RlZmluZSBDYWNoZVBvbGljeV9oCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotICAg
IGVudW0gQ2FjaGVQb2xpY3kgewotICAgICAgICBDYWNoZVBvbGljeUNhY2hlLAotICAgICAgICBD
YWNoZVBvbGljeVZlcmlmeSwKLSAgICAgICAgQ2FjaGVQb2xpY3lSZXZhbGlkYXRlLAotICAgICAg
ICBDYWNoZVBvbGljeVJlbG9hZCwKLSAgICAgICAgQ2FjaGVQb2xpY3lBbGxvd1N0YWxlCi0gICAg
fTsKLQotfQotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2xvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvbG9hZGVyLmNwcAkocmV2aXNpb24gNjkzNDcpCisrKyBX
ZWJDb3JlL2xvYWRlci9sb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNDgsOCArMzQ4LDgg
QEAKICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbGFzdE1vZGlmaWVkID0gcmVzb3VyY2VUb1Jl
dmFsaWRhdGUtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJMYXN0LU1vZGlmaWVkIik7CiAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIGVUYWcgPSByZXNvdXJjZVRvUmV2YWxpZGF0ZS0+cmVz
cG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkVUYWciKTsKICAgICAgICAgICAgIGlmICghbGFzdE1v
ZGlmaWVkLmlzRW1wdHkoKSB8fCAhZVRhZy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICBB
U1NFUlQoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hlUG9saWN5KCkgIT0gQ2FjaGVQb2xpY3lS
ZWxvYWQpOwotICAgICAgICAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZUxvYWRlci0+Y2FjaGVQ
b2xpY3koKSA9PSBDYWNoZVBvbGljeVJldmFsaWRhdGUpCisgICAgICAgICAgICAgICAgQVNTRVJU
KGNhY2hlZFJlc291cmNlTG9hZGVyLT5jYWNoZVBvbGljeSgpICE9IFJlbG9hZElnbm9yaW5nQ2Fj
aGVEYXRhKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FjaGVkUmVzb3VyY2VMb2FkZXItPmNhY2hl
UG9saWN5KCkgPT0gUmV2YWxpZGF0ZUNhY2hlRGF0YSkKICAgICAgICAgICAgICAgICAgICAgcmVz
b3VyY2VSZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiQ2FjaGUtQ29udHJvbCIsICJtYXgtYWdl
PTAiKTsKICAgICAgICAgICAgICAgICBpZiAoIWxhc3RNb2RpZmllZC5pc0VtcHR5KCkpCiAgICAg
ICAgICAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIklmLU1v
ZGlmaWVkLVNpbmNlIiwgbGFzdE1vZGlmaWVkKTsKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gNjkzNDcpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaWZuZGVmIEZyYW1lTG9hZGVyX2gKICNkZWZpbmUgRnJh
bWVMb2FkZXJfaAogCi0jaW5jbHVkZSAiQ2FjaGVQb2xpY3kuaCIKICNpbmNsdWRlICJEb2N1bWVu
dFdyaXRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyU3RhdGVNYWNoaW5lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgpAQCAtMTkwLDcgKzE4OSw3IEBACiAKICAgICBGcmFtZUxv
YWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAKLSAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNh
Y2hlUG9saWN5KCkgY29uc3Q7CisgICAgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3kgc3VicmVz
b3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwogCiAgICAgdm9pZCBkaWRGaXJzdExheW91dCgpOwog
Cg==
</data>
<flag name="review"
          id="60335"
          type_id="1"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>