<?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>31219</bug_id>
          
          <creation_ts>2009-11-06 17:44:55 -0800</creation_ts>
          <short_desc>Clean up GraphicsContext&apos;s current concept of ColorSpace</short_desc>
          <delta_ts>2009-11-08 10:57:19 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161280</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-06 17:44:55 -0800</bug_when>
    <thetext>Current GraphicsContexts is host to an enumeration called &quot;ColorSpace,&quot; and the GraphicsContext state keeps track of a strokeColorSpace and a fillColorSpace. The problem is that the values of ColorSpace -- SolidColorSpace, PatternColorSpace, and GradientColorSpace -- are not actually color spaces. CG is confusing, and that is how this error was made and stayed in the code for so long. I am about to add real ColorSpace support &lt;https://bugs.webkit.org/show_bug.cgi?id=31196&gt;, but first we think it&apos;s best to clean up GraphicsContext. I will post a patch shortly to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161286</commentid>
    <comment_count>1</comment_count>
      <attachid>42681</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-06 18:09:26 -0800</bug_when>
    <thetext>Created attachment 42681
Patch

Darin is likely to be at least a little disappointed in this patch since it is more conservative than some other options we discussed for this cleanup. Specifically, Darin noticed that once we have a Pattern or Gradient on the GraphicsContext, we keep a pointer to it forever. I wrote code that would get rid of old Patterns and Gradients once something that is not a Pattern or Gradient is set, but a bunch of canvas pattern tests failed. I haven&apos;t investigated the failures closely enough to know whether or not clearing out the pattern is an option or not. Ultimately, it seems like that is just a bigger problem than we are trying to solve today, and I will file a follow-up bug so we can take a look at it later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161288</commentid>
    <comment_count>2</comment_count>
      <attachid>42681</attachid>
    <who name="Adele Peterson">adele</who>
    <bug_when>2009-11-06 18:25:29 -0800</bug_when>
    <thetext>Comment on attachment 42681
Patch

Seems like a fine initial step for cleanup. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161292</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-11-06 18:52:07 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Darin is likely to be at least a little disappointed in this patch since it is
&gt; more conservative than some other options we discussed for this cleanup.

I&apos;m pretty happy with it.

&gt; I wrote code that would get
&gt; rid of old Patterns and Gradients once something that is not a Pattern or
&gt; Gradient is set, but a bunch of canvas pattern tests failed.

I&apos;ll play with that myself if I have some free time. It doesn&apos;t seem important to tackle it any time soon -- you can get on to the color space work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161307</commentid>
    <comment_count>4</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-11-07 00:00:42 -0800</bug_when>
    <thetext>Yay! Thanks Adele and Darin.

Fixed with r50614.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>161436</commentid>
    <comment_count>5</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2009-11-08 10:57:19 -0800</bug_when>
    <thetext>No Skia changes? :-\</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42681</attachid>
            <date>2009-11-06 18:09:26 -0800</date>
            <delta_ts>2009-11-06 18:25:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>cleanupForReview.txt</filename>
            <type>text/plain</type>
            <size>20146</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDYxMikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMDktMTEtMDYgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjE5IENsZWFuIHVw
IAorICAgICAgICBHcmFwaGljc0NvbnRleHQncyBjdXJyZW50IGNvbmNlcHQgb2YgQ29sb3JTcGFj
ZQorCisgICAgICAgIENvbG9yU3BhY2UgaXMgbm93IGNhbGxlZCBDb2xvclR5cGUuIFRoZSB2YXJp
YWJsZXMgb24gdGhlIHN0YXRlIHdlIAorICAgICAgICBhcHByb3ByaWF0ZWx5IHJlLW5hbWVkIGFz
IHdlbGwuIEkgcmVtb3ZlZCBzdHJva2VDb2xvclNwYWNlKCkgYW5kIAorICAgICAgICBmaWxsQ29s
b3JTcGFjZSgpIGZyb20gR3JhcGhpY3NDb250ZXh0IHNpbmNlIHRoZXkgd2VyZSBuZXZlciBjYWxs
ZWQuIAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29sb3IpOgorICAgICAgICAo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0RmlsbFBhdHRlcm4pOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VHcmFkaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxHcmFkaWVudCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAg
IChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhbGN1bGF0ZURyYXdpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpzdHJva2VQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFJl
Y3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdp
bmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgor
ICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisKIDIwMDktMTEt
MDYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBRdCBidWls
ZCBmaXg6IGFkZGVkIGFuIEV4ZWNTdGF0ZSBwYXJhbWV0ZXIuCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCShyZXZpc2lvbiA1MDYwNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDE2ICsxMjIsMTEgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9r
ZVN0eWxlKGNvbgogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29uc3Qg
Q29sb3ImIGNvbG9yKQogewotICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VDb2xvclNwYWNlID0g
U29saWRDb2xvclNwYWNlOworICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VUeXBlID0gU29saWRD
b2xvclR5cGU7CiAgICAgbV9jb21tb24tPnN0YXRlLnN0cm9rZUNvbG9yID0gY29sb3I7CiAgICAg
c2V0UGxhdGZvcm1TdHJva2VDb2xvcihjb2xvcik7CiB9CiAKLUNvbG9yU3BhY2UgR3JhcGhpY3ND
b250ZXh0OjpzdHJva2VDb2xvclNwYWNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jb21tb24t
PnN0YXRlLnN0cm9rZUNvbG9yU3BhY2U7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRT
aGFkb3coY29uc3QgSW50U2l6ZSYgc2l6ZSwgaW50IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvcikK
IHsKICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93U2l6ZSA9IHNpemU7CkBAIC0xODQsNyArMTc5
LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEZpbGxSdWxlKFdpbmRSdQogCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6c2V0RmlsbENvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKIHsKLSAgICBt
X2NvbW1vbi0+c3RhdGUuZmlsbENvbG9yU3BhY2UgPSBTb2xpZENvbG9yU3BhY2U7CisgICAgbV9j
b21tb24tPnN0YXRlLmZpbGxUeXBlID0gU29saWRDb2xvclR5cGU7CiAgICAgbV9jb21tb24tPnN0
YXRlLmZpbGxDb2xvciA9IGNvbG9yOwogICAgIHNldFBsYXRmb3JtRmlsbENvbG9yKGNvbG9yKTsK
IH0KQEAgLTIxMiw3ICsyMDcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlUGF0
dGVybihQCiAgICAgICAgIHNldFN0cm9rZUNvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgbV9jb21tb24tPnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UgPSBQYXR0
ZXJuQ29sb3JTcGFjZTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlVHlwZSA9IFBhdHRlcm5U
eXBlOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VQYXR0ZXJuID0gcGF0dGVybjsKICAgICBz
ZXRQbGF0Zm9ybVN0cm9rZVBhdHRlcm4obV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0
KCkpOwogfQpAQCAtMjI0LDcgKzIxOSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxs
UGF0dGVybihQYXMKICAgICAgICAgc2V0RmlsbENvbG9yKENvbG9yOjpibGFjayk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgbV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlID0gUGF0
dGVybkNvbG9yU3BhY2U7CisgICAgbV9jb21tb24tPnN0YXRlLmZpbGxUeXBlID0gUGF0dGVyblR5
cGU7CiAgICAgbV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuID0gcGF0dGVybjsKICAgICBzZXRQ
bGF0Zm9ybUZpbGxQYXR0ZXJuKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVybi5nZXQoKSk7CiB9
CkBAIC0yMzYsNyArMjMxLDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFN0cm9rZUdyYWRp
ZW50KAogICAgICAgICBzZXRTdHJva2VDb2xvcihDb2xvcjo6YmxhY2spOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VDb2xvclNwYWNlID0gR3JhZGll
bnRDb2xvclNwYWNlOworICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VUeXBlID0gR3JhZGllbnRU
eXBlOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFkaWVudCA9IGdyYWRpZW50OwogICAg
IHNldFBsYXRmb3JtU3Ryb2tlR3JhZGllbnQobV9jb21tb24tPnN0YXRlLnN0cm9rZUdyYWRpZW50
LmdldCgpKTsKIH0KQEAgLTI0OCw3ICsyNDMsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
RmlsbEdyYWRpZW50KFBhCiAgICAgICAgIHNldEZpbGxDb2xvcihDb2xvcjo6YmxhY2spOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFjZSA9
IEdyYWRpZW50Q29sb3JTcGFjZTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuZmlsbFR5cGUgPSBHcmFk
aWVudFR5cGU7CiAgICAgbV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCA9IGdyYWRpZW50Owog
ICAgIHNldFBsYXRmb3JtRmlsbEdyYWRpZW50KG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQu
Z2V0KCkpOwogfQpAQCAtMjU4LDExICsyNTMsNiBAQCBHcmFkaWVudCogR3JhcGhpY3NDb250ZXh0
OjpmaWxsR3JhZGllbnQoCiAgICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGllbnQu
Z2V0KCk7CiB9CiAKLUNvbG9yU3BhY2UgR3JhcGhpY3NDb250ZXh0OjpmaWxsQ29sb3JTcGFjZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFjZTsKLX0K
LQogR3JhZGllbnQqIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlR3JhZGllbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7CkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDUw
NjA0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTMwLDE2ICsxMzAsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBEYXNoZWRTdHJva2UKICAgICB9OwogCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSBwbGFj
ZS1ob2xkZXIgdW50aWwgd2UgZGVjaWRlIHRvIGFkZAotICAgIC8vIHJlYWwgY29sb3Igc3BhY2Ug
c3VwcG9ydCB0byBXZWJDb3JlLiAgQXQgdGhhdCB0aW1lLCBDb2xvclNwYWNlIHdpbGwgYmUgYQot
ICAgIC8vIGNsYXNzIGFuZCBpbnN0YW5jZXMgd2lsbCBiZSBoZWxkICBvZmYgb2YgQ29sb3JzLiAg
IFRoZXJlIHdpbGwgYmUKLSAgICAvLyBzcGVjaWFsIHNpbmdsZXRvbiBHcmFkaWVudCBhbmQgUGF0
dGVybiBjb2xvciBzcGFjZXMgdG8gbWFyayB3aGVuCi0gICAgLy8gYSBmaWxsIG9yIHN0cm9rZSBp
cyB1c2luZyBhIGdyYWRpZW50IG9yIHBhdHRlcm4gaW5zdGVhZCBvZiBhIHNvbGlkIGNvbG9yLgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDU1OAotICAg
IGVudW0gQ29sb3JTcGFjZSB7Ci0gICAgICAgIFNvbGlkQ29sb3JTcGFjZSwKLSAgICAgICAgUGF0
dGVybkNvbG9yU3BhY2UsCi0gICAgICAgIEdyYWRpZW50Q29sb3JTcGFjZQorICAgIGVudW0gRmls
bE9yU3Ryb2tlVHlwZSB7CisgICAgICAgIFNvbGlkQ29sb3JUeXBlLAorICAgICAgICBQYXR0ZXJu
VHlwZSwKKyAgICAgICAgR3JhZGllbnRUeXBlCiAgICAgfTsKIAogICAgIGVudW0gSW50ZXJwb2xh
dGlvblF1YWxpdHkgewpAQCAtMTY2LDggKzE2MCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgQ29sb3Igc3Ryb2tlQ29sb3IoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRTdHJva2VD
b2xvcihjb25zdCBDb2xvciYpOwogCi0gICAgICAgIENvbG9yU3BhY2Ugc3Ryb2tlQ29sb3JTcGFj
ZSgpIGNvbnN0OwotCiAgICAgICAgIHZvaWQgc2V0U3Ryb2tlUGF0dGVybihQYXNzUmVmUHRyPFBh
dHRlcm4+KTsKICAgICAgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0OwogCkBAIC0x
ODUsOCArMTc3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEZpbGxH
cmFkaWVudChQYXNzUmVmUHRyPEdyYWRpZW50Pik7CiAgICAgICAgIEdyYWRpZW50KiBmaWxsR3Jh
ZGllbnQoKSBjb25zdDsKIAotICAgICAgICBDb2xvclNwYWNlIGZpbGxDb2xvclNwYWNlKCkgY29u
c3Q7Ci0KICAgICAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sKTsKIAog
ICAgICAgICB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhib29sKTsKSW5kZXg6IFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCShyZXZpc2lv
biA1MDYwNCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxOCArMzgsMTggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgOiB0ZXh0RHJhd2luZ01vZGUoY1RleHRGaWxsKQogICAgICAgICAg
ICAgLCBzdHJva2VTdHlsZShTb2xpZFN0cm9rZSkKICAgICAgICAgICAgICwgc3Ryb2tlVGhpY2tu
ZXNzKDApCi0jaWYgUExBVEZPUk0oQ0FJUk8pCi0gICAgICAgICAgICAsIGdsb2JhbEFscGhhKDEu
MGYpCi0jZW5kaWYKLSAgICAgICAgICAgICwgc3Ryb2tlQ29sb3JTcGFjZShTb2xpZENvbG9yU3Bh
Y2UpCisgICAgICAgICAgICAsIHN0cm9rZVR5cGUoU29saWRDb2xvclR5cGUpCiAgICAgICAgICAg
ICAsIHN0cm9rZUNvbG9yKENvbG9yOjpibGFjaykKICAgICAgICAgICAgICwgZmlsbFJ1bGUoUlVM
RV9OT05aRVJPKQotICAgICAgICAgICAgLCBmaWxsQ29sb3JTcGFjZShTb2xpZENvbG9yU3BhY2Up
CisgICAgICAgICAgICAsIGZpbGxUeXBlKFNvbGlkQ29sb3JUeXBlKQogICAgICAgICAgICAgLCBm
aWxsQ29sb3IoQ29sb3I6OmJsYWNrKQogICAgICAgICAgICAgLCBzaG91bGRBbnRpYWxpYXModHJ1
ZSkKICAgICAgICAgICAgICwgcGFpbnRpbmdEaXNhYmxlZChmYWxzZSkKICAgICAgICAgICAgICwg
c2hhZG93Qmx1cigwKQogICAgICAgICAgICAgLCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcyhmYWxz
ZSkKKyNpZiBQTEFURk9STShDQUlSTykKKyAgICAgICAgICAgICwgZ2xvYmFsQWxwaGEoMS4wZikK
KyNlbmRpZgogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNTcsMTggKzU3LDEzIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAgICAgICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxl
OwogICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3M7Ci0jaWYgUExBVEZPUk0oQ0FJUk8pCi0g
ICAgICAgIGZsb2F0IGdsb2JhbEFscGhhOwotI2VsaWYgUExBVEZPUk0oUVQpCi0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHBhdGhUcmFuc2Zvcm07Ci0jZW5kaWYKLSAgICAgICAgQ29sb3JT
cGFjZSBzdHJva2VDb2xvclNwYWNlOworICAgICAgICBGaWxsT3JTdHJva2VUeXBlIHN0cm9rZVR5
cGU7CiAgICAgICAgIENvbG9yIHN0cm9rZUNvbG9yOwogICAgICAgICBSZWZQdHI8R3JhZGllbnQ+
IHN0cm9rZUdyYWRpZW50OwogICAgICAgICBSZWZQdHI8UGF0dGVybj4gc3Ryb2tlUGF0dGVybjsK
ICAgICAgICAgCiAgICAgICAgIFdpbmRSdWxlIGZpbGxSdWxlOwotICAgICAgICBDb2xvclNwYWNl
IGZpbGxDb2xvclNwYWNlOworICAgICAgICBGaWxsT3JTdHJva2VUeXBlIGZpbGxUeXBlOwogICAg
ICAgICBDb2xvciBmaWxsQ29sb3I7CiAgICAgICAgIFJlZlB0cjxHcmFkaWVudD4gZmlsbEdyYWRp
ZW50OwogICAgICAgICBSZWZQdHI8UGF0dGVybj4gZmlsbFBhdHRlcm47CkBAIC04Miw2ICs3Nywx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENvbG9yIHNoYWRvd0NvbG9yOwogCiAg
ICAgICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7CisjaWYgUExBVEZPUk0oQ0FJUk8p
CisgICAgICAgIGZsb2F0IGdsb2JhbEFscGhhOworI2VsaWYgUExBVEZPUk0oUVQpCisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhdGhUcmFuc2Zvcm07CisjZW5kaWYKICAgICB9OwogCiAg
ICAgY2xhc3MgR3JhcGhpY3NDb250ZXh0UHJpdmF0ZSB7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAko
cmV2aXNpb24gNTA2MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dENhaXJvLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDIwICszOTAsMjAgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKCkKICAgICBjYWlyb19zYXZlKGNyKTsKIAog
ICAgIGNhaXJvX3NldF9maWxsX3J1bGUoY3IsIGZpbGxSdWxlKCkgPT0gUlVMRV9FVkVOT0REID8g
Q0FJUk9fRklMTF9SVUxFX0VWRU5fT0REIDogQ0FJUk9fRklMTF9SVUxFX1dJTkRJTkcpOwotICAg
IHN3aXRjaCAobV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBTb2xp
ZENvbG9yU3BhY2U6CisgICAgc3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuZmlsbFR5cGUpIHsKKyAg
ICBjYXNlIFNvbGlkQ29sb3JUeXBlOgogICAgICAgICBzZXRDb2xvcihjciwgZmlsbENvbG9yKCkp
OwogICAgICAgICBjYWlyb19jbGlwKGNyKTsKICAgICAgICAgY2Fpcm9fcGFpbnRfd2l0aF9hbHBo
YShjciwgbV9jb21tb24tPnN0YXRlLmdsb2JhbEFscGhhKTsKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBQYXR0ZXJuQ29sb3JTcGFjZTogeworICAgIGNhc2UgUGF0dGVyblR5cGU6IHsKICAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWZmaW5lOwogICAgICAgICBjYWlyb19zZXRfc291cmNl
KGNyLCBtX2NvbW1vbi0+c3RhdGUuZmlsbFBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihh
ZmZpbmUpKTsKICAgICAgICAgY2Fpcm9fY2xpcChjcik7CiAgICAgICAgIGNhaXJvX3BhaW50X3dp
dGhfYWxwaGEoY3IsIG1fY29tbW9uLT5zdGF0ZS5nbG9iYWxBbHBoYSk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KLSAgICBjYXNlIEdyYWRpZW50Q29sb3JTcGFjZToKKyAgICBjYXNlIEdyYWRpZW50
VHlwZToKICAgICAgICAgY2Fpcm9fcGF0dGVybl90KiBwYXR0ZXJuID0gbV9jb21tb24tPnN0YXRl
LmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpOwogICAgICAgICBjYWlyb19zZXRfc291
cmNlKGNyLCBwYXR0ZXJuKTsKICAgICAgICAgY2Fpcm9fY2xpcChjcik7CkBAIC00MjAsOCArNDIw
LDggQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdGgoKQogCiAgICAgY2Fpcm9fdCog
Y3IgPSBtX2RhdGEtPmNyOwogICAgIGNhaXJvX3NhdmUoY3IpOwotICAgIHN3aXRjaCAobV9jb21t
b24tPnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIFNvbGlkQ29sb3JTcGFjZToK
KyAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5zdHJva2VUeXBlKSB7CisgICAgY2FzZSBTb2xp
ZENvbG9yVHlwZToKICAgICAgICAgZmxvYXQgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGE7CiAgICAg
ICAgIHN0cm9rZUNvbG9yKCkuZ2V0UkdCQShyZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAgICAg
ICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZ2xvYmFsQWxwaGEgPCAxLjBmKQpAQCAtNDI5LDcgKzQy
OSw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKCkKICAgICAgICAgY2Fpcm9f
c2V0X3NvdXJjZV9yZ2JhKGNyLCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAgICAgICAgIGNh
aXJvX3N0cm9rZShjcik7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0dGVybkNvbG9yU3Bh
Y2U6IHsKKyAgICBjYXNlIFBhdHRlcm5UeXBlOiB7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGFmZmluZTsKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZShjciwgbV9jb21tb24tPnN0YXRl
LnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihhZmZpbmUpKTsKICAgICAgICAg
aWYgKG1fY29tbW9uLT5zdGF0ZS5nbG9iYWxBbHBoYSA8IDEuMGYpIHsKQEAgLTQ0MCw3ICs0NDAs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aCgpCiAgICAgICAgIGNhaXJvX3N0
cm9rZShjcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjYXNlIEdyYWRpZW50Q29sb3JT
cGFjZToKKyAgICBjYXNlIEdyYWRpZW50VHlwZToKICAgICAgICAgY2Fpcm9fcGF0dGVybl90KiBw
YXR0ZXJuID0gbV9jb21tb24tPnN0YXRlLnN0cm9rZUdyYWRpZW50LT5wbGF0Zm9ybUdyYWRpZW50
KCk7CiAgICAgICAgIGNhaXJvX3NldF9zb3VyY2UoY3IsIHBhdHRlcm4pOwogICAgICAgICBpZiAo
bV9jb21tb24tPnN0YXRlLmdsb2JhbEFscGhhIDwgMS4wZikgewpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9u
IDUwNjA0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRD
Ry5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMCw4ICs0MzAsOCBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6YXBwbHlGaWxsUGF0dGVybigpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBjYWxjdWxhdGVE
cmF3aW5nTW9kZShjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUsIENHUGF0aERyYXdp
bmdNb2RlJiBtb2RlKQogewotICAgIGJvb2wgc2hvdWxkRmlsbCA9IHN0YXRlLmZpbGxDb2xvclNw
YWNlID09IFBhdHRlcm5Db2xvclNwYWNlIHx8IHN0YXRlLmZpbGxDb2xvci5hbHBoYSgpOwotICAg
IGJvb2wgc2hvdWxkU3Ryb2tlID0gc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZSA9PSBQYXR0ZXJuQ29s
b3JTcGFjZSB8fCAoc3RhdGUuc3Ryb2tlU3R5bGUgIT0gTm9TdHJva2UgJiYgc3RhdGUuc3Ryb2tl
Q29sb3IuYWxwaGEoKSk7CisgICAgYm9vbCBzaG91bGRGaWxsID0gc3RhdGUuZmlsbFR5cGUgPT0g
UGF0dGVyblR5cGUgfHwgc3RhdGUuZmlsbENvbG9yLmFscGhhKCk7CisgICAgYm9vbCBzaG91bGRT
dHJva2UgPSBzdGF0ZS5zdHJva2VUeXBlID09IFBhdHRlcm5UeXBlIHx8IChzdGF0ZS5zdHJva2VT
dHlsZSAhPSBOb1N0cm9rZSAmJiBzdGF0ZS5zdHJva2VDb2xvci5hbHBoYSgpKTsKICAgICBib29s
IHVzZUVPRmlsbCA9IHN0YXRlLmZpbGxSdWxlID09IFJVTEVfRVZFTk9ERDsKIAogICAgIGlmIChz
aG91bGRGaWxsKSB7CkBAIC00NjMsMTYgKzQ2MywxNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZHJhd1BhdGgoKQogICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gcGxhdGZvcm1Db250ZXh0KCk7
CiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlID0gbV9jb21tb24tPnN0YXRl
OwogCi0gICAgaWYgKHN0YXRlLmZpbGxDb2xvclNwYWNlID09IEdyYWRpZW50Q29sb3JTcGFjZSB8
fCBzdGF0ZS5zdHJva2VDb2xvclNwYWNlID09IEdyYWRpZW50Q29sb3JTcGFjZSkgeworICAgIGlm
IChzdGF0ZS5maWxsVHlwZSA9PSBHcmFkaWVudFR5cGUgfHwgc3RhdGUuc3Ryb2tlVHlwZSA9PSBH
cmFkaWVudFR5cGUpIHsKICAgICAgICAgLy8gV2UgZG9uJ3QgaGF2ZSBhbnkgb3B0aW1pemVkIHdh
eSB0byBmaWxsICYgc3Ryb2tlIGEgcGF0aCB1c2luZyBncmFkaWVudHMKICAgICAgICAgZmlsbFBh
dGgoKTsKICAgICAgICAgc3Ryb2tlUGF0aCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgaWYgKHN0YXRlLmZpbGxDb2xvclNwYWNlID09IFBhdHRlcm5Db2xvclNwYWNlKQorICAgIGlm
IChzdGF0ZS5maWxsVHlwZSA9PSBQYXR0ZXJuVHlwZSkKICAgICAgICAgYXBwbHlGaWxsUGF0dGVy
bigpOwotICAgIGlmIChzdGF0ZS5zdHJva2VDb2xvclNwYWNlID09IFBhdHRlcm5Db2xvclNwYWNl
KQorICAgIGlmIChzdGF0ZS5zdHJva2VUeXBlID09IFBhdHRlcm5UeXBlKQogICAgICAgICBhcHBs
eVN0cm9rZVBhdHRlcm4oKTsKIAogICAgIENHUGF0aERyYXdpbmdNb2RlIGRyYXdpbmdNb2RlOwpA
QCAtNDk0LDE1ICs0OTQsMTUgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxQYXRoKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRl
eHQoKTsKLSAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFjZSkgewotICAg
IGNhc2UgU29saWRDb2xvclNwYWNlOgorICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLmZpbGxU
eXBlKSB7CisgICAgY2FzZSBTb2xpZENvbG9yVHlwZToKICAgICAgICAgZmlsbFBhdGhXaXRoRmls
bFJ1bGUoY29udGV4dCwgZmlsbFJ1bGUoKSk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGF0
dGVybkNvbG9yU3BhY2U6CisgICAgY2FzZSBQYXR0ZXJuVHlwZToKICAgICAgICAgYXBwbHlGaWxs
UGF0dGVybigpOwogICAgICAgICBmaWxsUGF0aFdpdGhGaWxsUnVsZShjb250ZXh0LCBmaWxsUnVs
ZSgpKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFkaWVudENvbG9yU3BhY2U6CisgICAg
Y2FzZSBHcmFkaWVudFR5cGU6CiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7
CiAgICAgICAgIGlmIChmaWxsUnVsZSgpID09IFJVTEVfRVZFTk9ERCkKICAgICAgICAgICAgIENH
Q29udGV4dEVPQ2xpcChjb250ZXh0KTsKQEAgLTUyMSwxNSArNTIxLDE1IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzdHJva2VQYXRoKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQ0dDb250ZXh0
UmVmIGNvbnRleHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBzd2l0Y2ggKG1fY29tbW9uLT5z
dGF0ZS5zdHJva2VDb2xvclNwYWNlKSB7Ci0gICAgY2FzZSBTb2xpZENvbG9yU3BhY2U6CisgICAg
c3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlVHlwZSkgeworICAgIGNhc2UgU29saWRDb2xv
clR5cGU6CiAgICAgICAgIENHQ29udGV4dFN0cm9rZVBhdGgoY29udGV4dCk7CiAgICAgICAgIGJy
ZWFrOwotICAgIGNhc2UgUGF0dGVybkNvbG9yU3BhY2U6CisgICAgY2FzZSBQYXR0ZXJuVHlwZToK
ICAgICAgICAgYXBwbHlTdHJva2VQYXR0ZXJuKCk7CiAgICAgICAgIENHQ29udGV4dFN0cm9rZVBh
dGgoY29udGV4dCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhZGllbnRDb2xvclNwYWNl
OgorICAgIGNhc2UgR3JhZGllbnRUeXBlOgogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNv
bnRleHQpOwogICAgICAgICBDR0NvbnRleHRSZXBsYWNlUGF0aFdpdGhTdHJva2VkUGF0aChjb250
ZXh0KTsKICAgICAgICAgQ0dDb250ZXh0Q2xpcChjb250ZXh0KTsKQEAgLTU0NSwxNSArNTQ1LDE1
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG8KICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAgICAgQ0dDb250ZXh0UmVmIGNvbnRl
eHQgPSBwbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5maWxs
Q29sb3JTcGFjZSkgewotICAgIGNhc2UgU29saWRDb2xvclNwYWNlOgorICAgIHN3aXRjaCAobV9j
b21tb24tPnN0YXRlLmZpbGxUeXBlKSB7CisgICAgY2FzZSBTb2xpZENvbG9yVHlwZToKICAgICAg
ICAgQ0dDb250ZXh0RmlsbFJlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgUGF0dGVybkNvbG9yU3BhY2U6CisgICAgY2FzZSBQYXR0ZXJuVHlwZToKICAgICAgICAg
YXBwbHlGaWxsUGF0dGVybigpOwogICAgICAgICBDR0NvbnRleHRGaWxsUmVjdChjb250ZXh0LCBy
ZWN0KTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHcmFkaWVudENvbG9yU3BhY2U6CisgICAg
Y2FzZSBHcmFkaWVudFR5cGU6CiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7
CiAgICAgICAgIENHQ29udGV4dENsaXBUb1JlY3QoY29udGV4dCwgcmVjdCk7CiAgICAgICAgIENH
Q29udGV4dENvbmNhdENUTShjb250ZXh0LCBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5n
cmFkaWVudFNwYWNlVHJhbnNmb3JtKCkpOwpAQCAtNzc5LDE1ICs3NzksMTUgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnN0cm9rZVJlY3QoY29uc3QgRgogICAgICAgICByZXR1cm47CiAKICAgICBD
R0NvbnRleHRSZWYgY29udGV4dCA9IHBsYXRmb3JtQ29udGV4dCgpOwotICAgIHN3aXRjaCAobV9j
b21tb24tPnN0YXRlLnN0cm9rZUNvbG9yU3BhY2UpIHsKLSAgICBjYXNlIFNvbGlkQ29sb3JTcGFj
ZToKKyAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5zdHJva2VUeXBlKSB7CisgICAgY2FzZSBT
b2xpZENvbG9yVHlwZToKICAgICAgICAgQ0dDb250ZXh0U3Ryb2tlUmVjdFdpdGhXaWR0aChjb250
ZXh0LCByLCBsaW5lV2lkdGgpOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhdHRlcm5Db2xv
clNwYWNlOgorICAgIGNhc2UgUGF0dGVyblR5cGU6CiAgICAgICAgIGFwcGx5U3Ryb2tlUGF0dGVy
bigpOwogICAgICAgICBDR0NvbnRleHRTdHJva2VSZWN0V2l0aFdpZHRoKGNvbnRleHQsIHIsIGxp
bmVXaWR0aCk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgR3JhZGllbnRDb2xvclNwYWNlOgor
ICAgIGNhc2UgR3JhZGllbnRUeXBlOgogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRl
eHQpOwogICAgICAgICBzZXRTdHJva2VUaGlja25lc3MobGluZVdpZHRoKTsKICAgICAgICAgQ0dD
b250ZXh0QWRkUmVjdChjb250ZXh0LCByKTsKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCShyZXZpc2lvbiA1MDYwNCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02MzksMjAgKzYzOSwyMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFBhdGgoKQogICAgIFFQYWludGVyUGF0aCBwYXRoID0gbV9kYXRhLT5jdXJyZW50UGF0aDsKICAg
ICBwYXRoLnNldEZpbGxSdWxlKHRvUXRGaWxsUnVsZShmaWxsUnVsZSgpKSk7CiAKLSAgICBpZiAo
KG1fY29tbW9uLT5zdGF0ZS5maWxsQ29sb3JTcGFjZSAhPSBTb2xpZENvbG9yU3BhY2UpCisgICAg
aWYgKChtX2NvbW1vbi0+c3RhdGUuZmlsbFR5cGUgIT0gU29saWRDb2xvclR5cGUpCiAgICAgICAg
ICAgICB8fCAoZmlsbENvbG9yKCkuYWxwaGEoKSkpIHsKICAgICAgICAgZHJhd0ZpbGxlZFNoYWRv
d1BhdGgodGhpcywgcCwgJnBhdGgpOwotICAgICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5m
aWxsQ29sb3JTcGFjZSkgewotICAgICAgICBjYXNlIFNvbGlkQ29sb3JTcGFjZToKKyAgICAgICAg
c3dpdGNoIChtX2NvbW1vbi0+c3RhdGUuZmlsbFR5cGUpIHsKKyAgICAgICAgY2FzZSBTb2xpZENv
bG9yVHlwZToKICAgICAgICAgICAgIGlmIChmaWxsQ29sb3IoKS5hbHBoYSgpKQogICAgICAgICAg
ICAgICAgIHAtPmZpbGxQYXRoKHBhdGgsIHAtPmJydXNoKCkpOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgUGF0dGVybkNvbG9yU3BhY2U6IHsKKyAgICAgICAgY2FzZSBQYXR0ZXJu
VHlwZTogewogICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWZmaW5lOwogICAgICAg
ICAgICAgcC0+ZmlsbFBhdGgocGF0aCwgUUJydXNoKG1fY29tbW9uLT5zdGF0ZS5maWxsUGF0dGVy
bi0+Y3JlYXRlUGxhdGZvcm1QYXR0ZXJuKGFmZmluZSkpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2UgR3JhZGllbnRDb2xvclNwYWNlOgorICAgICAgICBjYXNl
IEdyYWRpZW50VHlwZToKICAgICAgICAgICAgIFFCcnVzaCBicnVzaCgqbV9jb21tb24tPnN0YXRl
LmZpbGxHcmFkaWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgICAgIGJydXNoLnNl
dFRyYW5zZm9ybShtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5ncmFkaWVudFNwYWNlVHJh
bnNmb3JtKCkpOwogICAgICAgICAgICAgcC0+ZmlsbFBhdGgocGF0aCwgYnJ1c2gpOwpAQCAtNjcy
LDcgKzY3Miw3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKCkKICAgICBRUGFp
bnRlclBhdGggcGF0aCA9IG1fZGF0YS0+Y3VycmVudFBhdGg7CiAgICAgcGF0aC5zZXRGaWxsUnVs
ZSh0b1F0RmlsbFJ1bGUoZmlsbFJ1bGUoKSkpOwogCi0gICAgaWYgKChtX2NvbW1vbi0+c3RhdGUu
c3Ryb2tlQ29sb3JTcGFjZSAhPSBTb2xpZENvbG9yU3BhY2UpCisgICAgaWYgKChtX2NvbW1vbi0+
c3RhdGUuc3Ryb2tlVHlwZSAhPSBTb2xpZENvbG9yVHlwZSkKICAgICAgICAgICAgIHx8IChzdHJv
a2VDb2xvcigpLmFscGhhKCkpKSB7CiAgICAgICAgIEludFNpemUgc2hhZG93U2l6ZTsKICAgICAg
ICAgaW50IHNoYWRvd0JsdXI7CkBAIC02ODUsMTkgKzY4NSwxOSBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlUGF0aCgpCiAgICAgICAgICAgICBwLT5zdHJva2VQYXRoKHBhdGgsIHNoYWRv
d1Blbik7CiAgICAgICAgICAgICBwLT5zZXRXb3JsZFRyYW5zZm9ybSh0KTsKICAgICAgICAgfQot
ICAgICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0ZS5zdHJva2VDb2xvclNwYWNlKSB7Ci0gICAg
ICAgIGNhc2UgU29saWRDb2xvclNwYWNlOgorICAgICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0
ZS5zdHJva2VUeXBlKSB7CisgICAgICAgIGNhc2UgU29saWRDb2xvclR5cGU6CiAgICAgICAgICAg
ICBpZiAoc3Ryb2tlQ29sb3IoKS5hbHBoYSgpKQogICAgICAgICAgICAgICAgIHAtPnN0cm9rZVBh
dGgocGF0aCwgcGVuKTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBhdHRlcm5D
b2xvclNwYWNlOiB7CisgICAgICAgIGNhc2UgUGF0dGVyblR5cGU6IHsKICAgICAgICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFmZmluZTsKICAgICAgICAgICAgIHBlbi5zZXRCcnVzaChRQnJ1
c2gobV9jb21tb24tPnN0YXRlLnN0cm9rZVBhdHRlcm4tPmNyZWF0ZVBsYXRmb3JtUGF0dGVybihh
ZmZpbmUpKSk7CiAgICAgICAgICAgICBwLT5zZXRQZW4ocGVuKTsKICAgICAgICAgICAgIHAtPnN0
cm9rZVBhdGgocGF0aCwgcGVuKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2UgR3JhZGllbnRDb2xvclNwYWNlOiB7CisgICAgICAgIGNhc2UgR3JhZGllbnRUeXBl
OiB7CiAgICAgICAgICAgICBRQnJ1c2ggYnJ1c2goKm1fY29tbW9uLT5zdGF0ZS5zdHJva2VHcmFk
aWVudC0+cGxhdGZvcm1HcmFkaWVudCgpKTsKICAgICAgICAgICAgIGJydXNoLnNldFRyYW5zZm9y
bShtX2NvbW1vbi0+c3RhdGUuc3Ryb2tlR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0o
KSk7CiAgICAgICAgICAgICBwZW4uc2V0QnJ1c2goYnJ1c2gpOwpAQCAtNzI5LDIwICs3MjksMjAg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0IEZsbwogCiAgICAgUVBhaW50
ZXIqIHAgPSBtX2RhdGEtPnAoKTsKIAotICAgIGlmICgobV9jb21tb24tPnN0YXRlLmZpbGxDb2xv
clNwYWNlICE9IFNvbGlkQ29sb3JTcGFjZSkKKyAgICBpZiAoKG1fY29tbW9uLT5zdGF0ZS5maWxs
VHlwZSAhPSBTb2xpZENvbG9yVHlwZSkKICAgICAgICAgICAgIHx8IChmaWxsQ29sb3IoKS5hbHBo
YSgpKSkgewogICAgICAgICBkcmF3Qm9yZGVybGVzc1JlY3RTaGFkb3codGhpcywgcCwgcmVjdCk7
Ci0gICAgICAgIHN3aXRjaCAobV9jb21tb24tPnN0YXRlLmZpbGxDb2xvclNwYWNlKSB7Ci0gICAg
ICAgIGNhc2UgU29saWRDb2xvclNwYWNlOgorICAgICAgICBzd2l0Y2ggKG1fY29tbW9uLT5zdGF0
ZS5maWxsVHlwZSkgeworICAgICAgICBjYXNlIFNvbGlkQ29sb3JUeXBlOgogICAgICAgICAgICAg
aWYgKGZpbGxDb2xvcigpLmFscGhhKCkpCiAgICAgICAgICAgICAgICAgcC0+ZmlsbFJlY3QocmVj
dCwgcC0+YnJ1c2goKSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQYXR0ZXJu
Q29sb3JTcGFjZTogeworICAgICAgICBjYXNlIFBhdHRlcm5UeXBlOiB7CiAgICAgICAgICAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBhZmZpbmU7CiAgICAgICAgICAgICBwLT5maWxsUmVjdChyZWN0
LCBRQnJ1c2gobV9jb21tb24tPnN0YXRlLmZpbGxQYXR0ZXJuLT5jcmVhdGVQbGF0Zm9ybVBhdHRl
cm4oYWZmaW5lKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBHcmFkaWVudENvbG9yU3BhY2U6CisgICAgICAgIGNhc2UgR3JhZGllbnRUeXBlOgogICAgICAg
ICAgICAgUUJydXNoIGJydXNoKCptX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50LT5wbGF0Zm9y
bUdyYWRpZW50KCkpOwogICAgICAgICAgICAgYnJ1c2guc2V0VHJhbnNmb3JtKG1fY29tbW9uLT5z
dGF0ZS5maWxsR3JhZGllbnQtPmdyYWRpZW50U3BhY2VUcmFuc2Zvcm0oKSk7CiAgICAgICAgICAg
ICBwLT5maWxsUmVjdChyZWN0LCBicnVzaCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAkocmV2aXNp
b24gNTA2MDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29u
dGV4dFdpbmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1NSw3ICsxMzU1LDcgQEAgQ29sb3Ig
Z3JhZGllbnRBdmVyYWdlQ29sb3IoY29uc3QgR3JhZGllbgogCiB2b2lkIEdyYXBoaWNzQ29udGV4
dDo6ZmlsbFBhdGgoKQogewotICAgIENvbG9yIGMgPSBtX2NvbW1vbi0+c3RhdGUuZmlsbENvbG9y
U3BhY2UgPT0gR3JhZGllbnRDb2xvclNwYWNlICYmIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGll
bnQKKyAgICBDb2xvciBjID0gbV9jb21tb24tPnN0YXRlLmZpbGxUeXBlID09IEdyYWRpZW50VHlw
ZSAmJiBtX2NvbW1vbi0+c3RhdGUuZmlsbEdyYWRpZW50CiAgICAgICAgID8gZ3JhZGllbnRBdmVy
YWdlQ29sb3IobV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSkKICAgICAgICAgOiBm
aWxsQ29sb3IoKTsKIApAQCAtMTUzOSw3ICsxNTM5LDcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmNsaXBUb0ltYWdlQnVmZmVyKAogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiByZWN0KQogewotICAgIGlmIChtX2NvbW1vbi0+c3RhdGUuZmlsbENvbG9y
U3BhY2UgPT0gR3JhZGllbnRDb2xvclNwYWNlICYmIG1fY29tbW9uLT5zdGF0ZS5maWxsR3JhZGll
bnQpCisgICAgaWYgKG1fY29tbW9uLT5zdGF0ZS5maWxsVHlwZSA9PSBHcmFkaWVudFR5cGUgJiYg
bV9jb21tb24tPnN0YXRlLmZpbGxHcmFkaWVudCkKICAgICAgICAgZmlsbFJlY3QocmVjdCwgbV9j
b21tb24tPnN0YXRlLmZpbGxHcmFkaWVudC5nZXQoKSk7CiAgICAgZWxzZQogICAgICAgICBmaWxs
UmVjdChyZWN0LCBmaWxsQ29sb3IoKSk7Cg==
</data>
<flag name="review"
          id="24244"
          type_id="1"
          status="+"
          setter="adele"
    />
          </attachment>
      

    </bug>

</bugzilla>