<?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>13381</bug_id>
          
          <creation_ts>2007-04-18 00:02:23 -0700</creation_ts>
          <short_desc>[js-collector-tweaks] Make Window object not an oversize object any more</short_desc>
          <delta_ts>2007-04-23 02:13:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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>
          
          <blocked>13382</blocked>
    
    <blocked>13389</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>14383</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 00:02:23 -0700</bug_when>
    <thetext>Window is the only object to make use of the JavaCriptCore oversize allocator; avoiding use of this should speed up garbage collection when there are many tabs/windows/frames open, and also enables a bunch of further optimizations to the collector.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14377</commentid>
    <comment_count>1</comment_count>
      <attachid>14062</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 00:04:51 -0700</bug_when>
    <thetext>Created attachment 14062
01-js-gc-window-not-oversize.patch.txt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14257</commentid>
    <comment_count>2</comment_count>
      <attachid>14062</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-04-18 10:58:25 -0700</bug_when>
    <thetext>Comment on attachment 14062
01-js-gc-window-not-oversize.patch.txt

Optimization level changes should be done in Configurations/Base.xcconfig instead of in the project.pbxproj.

Change otherwise looks fine to me. Although I&apos;m not crazy about the name &quot;d&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14219</commentid>
    <comment_count>3</comment_count>
      <attachid>14081</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-04-18 14:56:29 -0700</bug_when>
    <thetext>Created attachment 14081
omitting optimization level changes

The optimization level changes were accidental.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>14202</commentid>
    <comment_count>4</comment_count>
      <attachid>14081</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-04-18 21:13:35 -0700</bug_when>
    <thetext>Comment on attachment 14081
omitting optimization level changes

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14062</attachid>
            <date>2007-04-18 00:04:51 -0700</date>
            <delta_ts>2007-04-18 14:56:29 -0700</delta_ts>
            <desc>01-js-gc-window-not-oversize.patch.txt</desc>
            <filename>01-js-gc-window-not-oversize.patch.txt</filename>
            <type>text/plain</type>
            <size>24428</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDkxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDctMDQtMTcgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IG1vdmUgbW9zdCBvZiBXaW5kb3cncyBkYXRhIG1lbWJlcnMgaW50byBhIHNlcGFyYXRlIHByaXZh
dGUgb2JqZWN0LCB0byBhdm9pZCBuZWVkaW5nCisgICAgICAgIHRvIHVzZSB0aGUgb3ZlcnNpemUg
YWxsb2NhdG9yIGZvciBpdAorICAgICAgICAKKyAgICAgICAgSXQgd2FzIHRoZSBvbmx5IHJlbWFp
bmluZyBKU09iamVjdCBzdWJjbGFzcyB0byB1c2UgdGhlIG92ZXJzaXplCisgICAgICAgIGFsbG9j
YXRvciBvbiAzMi1iaXQgcGxhdGZvcm1zLCBhbmQgaGF2aW5nIG92ZXJzaXplIG9iamVjdHMgYXJv
dW5kCisgICAgICAgIG1ha2VzIGdhcmJhZ2UgY29sbGVjdGlvbiBzbG93ZXIgc28gdGhpcyB3b3Vs
ZCBodXJ0IHBlcmZvcm1hbmNlCisgICAgICAgIHdpdGggbWFueSB0YWJzL3dpbmRvd3Mgb3Blbi4K
KyAgICAgICAgCisgICAgICAgIE5vIHNpZ25pZmljYW50IGVmZmVjdCBvbiBKUyBpQmVuY2guCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcDoKKyAgICAgICAgKEtKUzo6SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXI6OkpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKToKKyAg
ICAgICAgKEtKUzo6SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI6On5KU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChLSlM6OkpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKEtKUzo6SlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKEtKUzo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcDoKKyAgICAgICAgKEtKUzo6V2luZG93UHJpdmF0
ZTo6V2luZG93UHJpdmF0ZSk6CisgICAgICAgIChLSlM6OldpbmRvdzo6V2luZG93KToKKyAgICAg
ICAgKEtKUzo6V2luZG93Ojp+V2luZG93KToKKyAgICAgICAgKEtKUzo6V2luZG93Ojpsb2NhdGlv
bik6CisgICAgICAgIChLSlM6OldpbmRvdzo6c2VsZWN0aW9uKToKKyAgICAgICAgKEtKUzo6V2lu
ZG93Ojpsb2NhdGlvbmJhcik6CisgICAgICAgIChLSlM6OldpbmRvdzo6bWVudWJhcik6CisgICAg
ICAgIChLSlM6OldpbmRvdzo6cGVyc29uYWxiYXIpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OnN0
YXR1c2Jhcik6CisgICAgICAgIChLSlM6OldpbmRvdzo6dG9vbGJhcik6CisgICAgICAgIChLSlM6
OldpbmRvdzo6c2Nyb2xsYmFycyk6CisgICAgICAgIChLSlM6OldpbmRvdzo6bWFyayk6CisgICAg
ICAgIChLSlM6OldpbmRvdzo6Z2V0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OldpbmRv
dzo6ZmluZEpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChLSlM6OldpbmRvdzo6ZmluZEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKEtKUzo6V2luZG93OjpjbGVhckhlbHBl
ck9iamVjdFByb3BlcnRpZXMpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmNsZWFyKToKKyAgICAg
ICAgKEtKUzo6V2luZG93OjpzZXRDdXJyZW50RXZlbnQpOgorICAgICAgICAoS0pTOjpXaW5kb3c6
OnNldFJldHVyblZhbHVlU2xvdCk6CisgICAgICAgIChLSlM6OldpbmRvdzo6Y2xlYXJBbGxUaW1l
b3V0cyk6CisgICAgICAgIChLSlM6OldpbmRvdzo6aW5zdGFsbFRpbWVvdXQpOgorICAgICAgICAo
S0pTOjpXaW5kb3c6OnBhdXNlVGltZW91dHMpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OnJlc3Vt
ZVRpbWVvdXRzKToKKyAgICAgICAgKEtKUzo6V2luZG93OjpjbGVhclRpbWVvdXQpOgorICAgICAg
ICAoS0pTOjpXaW5kb3c6OnRpbWVyRmlyZWQpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmRpc2Nv
bm5lY3RGcmFtZSk6CisgICAgICAgIChLSlM6OldpbmRvdzo6anNFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgIChLSlM6OldpbmRvdzo6anNIVE1MRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoS0pT
OjpXaW5kb3c6OmpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChLSlM6Oldp
bmRvdzo6anNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycyk6CisgICAgICAgICogYmluZGlu
Z3MvanMva2pzX3dpbmRvdy5oOgorCiAyMDA3LTA0LTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoZml4ZWQgbWlzc3Bl
bGxpbmcpLgpAQCAtMTE3NCw3ICsxMjI3LDYgQEAKICAgICAgICAgICByZXR1cm5zIHRoZSByb3Rh
dGVkIGJvdW5kcyBub3cgLS0gdGhpcyBpcyBhbHNvIHNhdmUgdGhlIG9sZCAKICAgICAgICAgICBG
bG9hdFNpemUgLT4gSW50U2l6ZSAtPiBGbG9hdFNpemUgY29udmVyc2lvbnMuCiAgICAgICAgICAg
Ci0KIDIwMDctMDQtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTE0KQorKysgV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEyNjM4LDcgKzEyNjM4
LDkgQEAKIAkJCWJhc2VDb25maWd1cmF0aW9uUmVmZXJlbmNlID0gMUNERDQ1RTUwQkE5Qzg0NjAw
RjkwMTQ3IC8qIFdlYkNvcmUueGNjb25maWcgKi87CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJ
CURFQlVHX0RFRklORVMgPSBOREVCVUc7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDI7
CiAJCQkJSU5TVEFMTF9QQVRIID0gIiQoQlVJTFRfUFJPRFVDVFNfRElSKSI7CisJCQkJT1RIRVJf
Q0ZMQUdTID0gIiI7CiAJCQkJT1RIRVJfTERGTEFHUyA9ICgKIAkJCQkJIi1sb2JqYyIsCiAJCQkJ
CSItc3ViX2xpYnJhcnkiLApAQCAtMTI2NTIsNiArMTI2NTQsOCBAQAogCQkJYmFzZUNvbmZpZ3Vy
YXRpb25SZWZlcmVuY2UgPSAxQ0RENDVFNTBCQTlDODQ2MDBGOTAxNDcgLyogV2ViQ29yZS54Y2Nv
bmZpZyAqLzsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJREVCVUdfREVGSU5FUyA9IE5ERUJV
RzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMjsKKwkJCQlPVEhFUl9DRkxBR1MgPSAi
IjsKIAkJCQlPVEhFUl9MREZMQUdTID0gKAogCQkJCQkiLWxvYmpjIiwKIAkJCQkJIi1zdWJfbGli
cmFyeSIsCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5jcHAJKHJldmlzaW9uIDIwOTE0
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTY1LDggKzE2NSw4IEBAIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyOjpKU1VucHJvdGVj
dGUKICAgLCB3aW4oX3dpbikKIHsKICAgICBpZiAoX2xpc3RlbmVyKSB7Ci0gICAgICAgIFdpbmRv
dzo6VW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IF9odG1sCi0gICAgICAgICAg
ICA/IF93aW4tPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMgOiBfd2luLT5qc1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcnM7CisgICAgICAgIFdpbmRvdzo6VW5wcm90ZWN0ZWRMaXN0ZW5l
cnNNYXAmIGxpc3RlbmVycyA9IF9odG1sIAorICAgICAgICAgICAgPyBfd2luLT5qc1VucHJvdGVj
dGVkSFRNTEV2ZW50TGlzdGVuZXJzKCkgOiBfd2luLT5qc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cnMoKTsKICAgICAgICAgbGlzdGVuZXJzLnNldChfbGlzdGVuZXIsIHRoaXMpOwogICAgIH0KIH0K
QEAgLTE3NSw3ICsxNzUsNyBAQCBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcjo6fkpTVW5wcm90
ZWN0CiB7CiAgICAgaWYgKGxpc3RlbmVyICYmIHdpbikgewogICAgICAgICBXaW5kb3c6OlVucHJv
dGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBpc0hUTUxFdmVudExpc3RlbmVyKCkKLSAg
ICAgICAgICAgID8gd2luLT5qc1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVuZXJzIDogd2luLT5q
c1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7CisgICAgICAgICAgICA/IHdpbi0+anNVbnByb3Rl
Y3RlZEhUTUxFdmVudExpc3RlbmVycygpIDogd2luLT5qc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cnMoKTsKICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CiAgICAgfQogfQpAQCAt
MjI4LDcgKzIyOCw3IEBAIEpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVyKEpTT2JqZWMK
IHsKICAgICBpZiAoX2xpc3RlbmVyKSB7CiAgICAgICAgIFdpbmRvdzo6TGlzdGVuZXJzTWFwJiBs
aXN0ZW5lcnMgPSBfaHRtbAotICAgICAgICAgICAgPyBfd2luLT5qc0hUTUxFdmVudExpc3RlbmVy
cyA6IF93aW4tPmpzRXZlbnRMaXN0ZW5lcnM7CisgICAgICAgICAgICA/IF93aW4tPmpzSFRNTEV2
ZW50TGlzdGVuZXJzKCkgOiBfd2luLT5qc0V2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIGxpc3Rl
bmVycy5zZXQoX2xpc3RlbmVyLCB0aGlzKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjQw
LDcgKzI0MCw3IEBAIEpTRXZlbnRMaXN0ZW5lcjo6fkpTRXZlbnRMaXN0ZW5lcigpCiB7CiAgICAg
aWYgKGxpc3RlbmVyICYmIHdpbikgewogICAgICAgICBXaW5kb3c6Okxpc3RlbmVyc01hcCYgbGlz
dGVuZXJzID0gaXNIVE1MRXZlbnRMaXN0ZW5lcigpCi0gICAgICAgICAgICA/IHdpbi0+anNIVE1M
RXZlbnRMaXN0ZW5lcnMgOiB3aW4tPmpzRXZlbnRMaXN0ZW5lcnM7CisgICAgICAgICAgICA/IHdp
bi0+anNIVE1MRXZlbnRMaXN0ZW5lcnMoKSA6IHdpbi0+anNFdmVudExpc3RlbmVycygpOwogICAg
ICAgICBsaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKICAgICB9CiAjaWZuZGVmIE5ERUJVRwpA
QCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKCkg
Y28KIAogICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBXaW5kb3c6Okxpc3RlbmVyc01hcCYg
bGlzdGVuZXJzID0gaXNIVE1MRXZlbnRMaXN0ZW5lcigpCi0gICAgICAgICAgICA/IHdpbmRvd09i
aigpLT5qc0hUTUxFdmVudExpc3RlbmVycyA6IHdpbmRvd09iaigpLT5qc0V2ZW50TGlzdGVuZXJz
OworICAgICAgICAgICAgPyB3aW5kb3dPYmooKS0+anNIVE1MRXZlbnRMaXN0ZW5lcnMoKSA6IHdp
bmRvd09iaigpLT5qc0V2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIGxpc3RlbmVycy5zZXQobGlz
dGVuZXIsIGNvbnN0X2Nhc3Q8SlNMYXp5RXZlbnRMaXN0ZW5lcio+KHRoaXMpKTsKICAgICB9CiB9
CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHJldmlzaW9uIDIwOTE0KQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzks
NiArNzksNDUgQEAgc3RhdGljIGludCB0aW1lck5lc3RpbmdMZXZlbCA9IDA7CiBjb25zdCBpbnQg
Y01heFRpbWVyTmVzdGluZ0xldmVsID0gNTsKIGNvbnN0IGRvdWJsZSBjTWluaW11bVRpbWVySW50
ZXJ2YWwgPSAwLjAxMDsKIAorc3RydWN0IFdpbmRvd1ByaXZhdGUgeworICAgIFdpbmRvd1ByaXZh
dGUoKSAKKyAgICAgICAgOiBzY3JlZW4oMCkKKyAgICAgICAgLCBoaXN0b3J5KDApCisgICAgICAg
ICwgZnJhbWVzKDApCisgICAgICAgICwgbG9jKDApCisgICAgICAgICwgbV9zZWxlY3Rpb24oMCkK
KyAgICAgICAgLCBtX2xvY2F0aW9uYmFyKDApCisgICAgICAgICwgbV9tZW51YmFyKDApCisgICAg
ICAgICwgbV9wZXJzb25hbGJhcigwKQorICAgICAgICAsIG1fc2Nyb2xsYmFycygwKQorICAgICAg
ICAsIG1fc3RhdHVzYmFyKDApCisgICAgICAgICwgbV90b29sYmFyKDApCisgICAgICAgICwgbV9l
dnQoMCkKKyAgICAgICAgLCBtX3JldHVyblZhbHVlU2xvdCgwKQorICAgIHsKKyAgICB9CisKKyAg
ICBXaW5kb3c6Okxpc3RlbmVyc01hcCBqc0V2ZW50TGlzdGVuZXJzOworICAgIFdpbmRvdzo6TGlz
dGVuZXJzTWFwIGpzSFRNTEV2ZW50TGlzdGVuZXJzOworICAgIFdpbmRvdzo6VW5wcm90ZWN0ZWRM
aXN0ZW5lcnNNYXAganNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzOworICAgIFdpbmRvdzo6VW5w
cm90ZWN0ZWRMaXN0ZW5lcnNNYXAganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVyczsKKyAg
ICBtdXRhYmxlIFNjcmVlbiogc2NyZWVuOworICAgIG11dGFibGUgSGlzdG9yeSogaGlzdG9yeTsK
KyAgICBtdXRhYmxlIEZyYW1lQXJyYXkqIGZyYW1lczsKKyAgICBtdXRhYmxlIExvY2F0aW9uKiBs
b2M7CisgICAgbXV0YWJsZSBTZWxlY3Rpb24qIG1fc2VsZWN0aW9uOworICAgIG11dGFibGUgQmFy
SW5mbyogbV9sb2NhdGlvbmJhcjsKKyAgICBtdXRhYmxlIEJhckluZm8qIG1fbWVudWJhcjsKKyAg
ICBtdXRhYmxlIEJhckluZm8qIG1fcGVyc29uYWxiYXI7CisgICAgbXV0YWJsZSBCYXJJbmZvKiBt
X3Njcm9sbGJhcnM7CisgICAgbXV0YWJsZSBCYXJJbmZvKiBtX3N0YXR1c2JhcjsKKyAgICBtdXRh
YmxlIEJhckluZm8qIG1fdG9vbGJhcjsKKyAgICBXZWJDb3JlOjpFdmVudCAqbV9ldnQ7CisgICAg
SlNWYWx1ZSAqKm1fcmV0dXJuVmFsdWVTbG90OworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIERP
TVdpbmRvd1RpbWVyKj4gVGltZW91dHNNYXA7CisgICAgVGltZW91dHNNYXAgbV90aW1lb3V0czsK
K307CisKIGNsYXNzIERPTVdpbmRvd1RpbWVyIDogcHVibGljIFRpbWVyQmFzZSB7CiBwdWJsaWM6
CiAgICAgRE9NV2luZG93VGltZXIoaW50IHRpbWVvdXRJZCwgaW50IG5lc3RpbmdMZXZlbCwgV2lu
ZG93KiBvLCBTY2hlZHVsZWRBY3Rpb24qIGEpCkBAIC0zMzEsMTkgKzM3MCw3IEBAIEtKU19JTVBM
RU1FTlRfUFJPVE9UWVBFX0ZVTkNUSU9OKFdpbmRvd0YKIAogV2luZG93OjpXaW5kb3coRE9NV2lu
ZG93KiB3aW5kb3cpCiAgIDogbV9mcmFtZSh3aW5kb3ctPmZyYW1lKCkpCi0gICwgc2NyZWVuKDAp
Ci0gICwgaGlzdG9yeSgwKQotICAsIGZyYW1lcygwKQotICAsIGxvYygwKQotICAsIG1fc2VsZWN0
aW9uKDApCi0gICwgbV9sb2NhdGlvbmJhcigwKQotICAsIG1fbWVudWJhcigwKQotICAsIG1fcGVy
c29uYWxiYXIoMCkKLSAgLCBtX3Njcm9sbGJhcnMoMCkKLSAgLCBtX3N0YXR1c2JhcigwKQotICAs
IG1fdG9vbGJhcigwKQotICAsIG1fZXZ0KDApCi0gICwgbV9yZXR1cm5WYWx1ZVNsb3QoMCkKKyAg
LCBkKG5ldyBXaW5kb3dQcml2YXRlKQogewogfQogCkBAIC0zNTMsMjEgKzM4MCwyMSBAQCBXaW5k
b3c6On5XaW5kb3coKQogCiAgICAgLy8gQ2xlYXIgYW55IGJhY2twb2ludGVycyB0byB0aGUgd2lu
ZG93CiAKLSAgICBMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGkyID0ganNFdmVudExpc3RlbmVycy5i
ZWdpbigpOwotICAgIExpc3RlbmVyc01hcDo6aXRlcmF0b3IgZTIgPSBqc0V2ZW50TGlzdGVuZXJz
LmVuZCgpOworICAgIExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaTIgPSBkLT5qc0V2ZW50TGlzdGVu
ZXJzLmJlZ2luKCk7CisgICAgTGlzdGVuZXJzTWFwOjppdGVyYXRvciBlMiA9IGQtPmpzRXZlbnRM
aXN0ZW5lcnMuZW5kKCk7CiAgICAgZm9yICg7IGkyICE9IGUyOyArK2kyKQogICAgICAgICBpMi0+
c2Vjb25kLT5jbGVhcldpbmRvd09iaigpOwotICAgIGkyID0ganNIVE1MRXZlbnRMaXN0ZW5lcnMu
YmVnaW4oKTsKLSAgICBlMiA9IGpzSFRNTEV2ZW50TGlzdGVuZXJzLmVuZCgpOworICAgIGkyID0g
ZC0+anNIVE1MRXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsKKyAgICBlMiA9IGQtPmpzSFRNTEV2ZW50
TGlzdGVuZXJzLmVuZCgpOwogICAgIGZvciAoOyBpMiAhPSBlMjsgKytpMikKICAgICAgICAgaTIt
PnNlY29uZC0+Y2xlYXJXaW5kb3dPYmooKTsKIAotICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFw
OjppdGVyYXRvciBpMSA9IGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycy5iZWdpbigpOwotICAg
IFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwOjppdGVyYXRvciBlMSA9IGpzVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVycy5lbmQoKTsKKyAgICBVbnByb3RlY3RlZExpc3RlbmVyc01hcDo6aXRlcmF0b3Ig
aTEgPSBkLT5qc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsKKyAgICBVbnByb3Rl
Y3RlZExpc3RlbmVyc01hcDo6aXRlcmF0b3IgZTEgPSBkLT5qc1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcnMuZW5kKCk7CiAgICAgZm9yICg7IGkxICE9IGUxOyArK2kxKQogICAgICAgICBpMS0+c2Vj
b25kLT5jbGVhcldpbmRvd09iaigpOwotICAgIGkxID0ganNVbnByb3RlY3RlZEhUTUxFdmVudExp
c3RlbmVycy5iZWdpbigpOwotICAgIGUxID0ganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVy
cy5lbmQoKTsKKyAgICBpMSA9IGQtPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuYmVn
aW4oKTsKKyAgICBlMSA9IGQtPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuZW5kKCk7
CiAgICAgZm9yICg7IGkxICE9IGUxOyArK2kxKQogICAgICAgICBpMS0+c2Vjb25kLT5jbGVhcldp
bmRvd09iaigpOwogfQpAQCAtNDA4LDE2ICs0MzUsMTYgQEAgSlNWYWx1ZSAqV2luZG93OjpyZXRy
aWV2ZShGcmFtZSAqcCkKIAogTG9jYXRpb24gKldpbmRvdzo6bG9jYXRpb24oKSBjb25zdAogewot
ICBpZiAoIWxvYykKLSAgICBsb2MgPSBuZXcgTG9jYXRpb24obV9mcmFtZSk7Ci0gIHJldHVybiBs
b2M7CisgIGlmICghZC0+bG9jKQorICAgIGQtPmxvYyA9IG5ldyBMb2NhdGlvbihtX2ZyYW1lKTsK
KyAgcmV0dXJuIGQtPmxvYzsKIH0KIAogU2VsZWN0aW9uICpXaW5kb3c6OnNlbGVjdGlvbigpIGNv
bnN0CiB7Ci0gIGlmICghbV9zZWxlY3Rpb24pCi0gICAgbV9zZWxlY3Rpb24gPSBuZXcgU2VsZWN0
aW9uKG1fZnJhbWUpOwotICByZXR1cm4gbV9zZWxlY3Rpb247CisgIGlmICghZC0+bV9zZWxlY3Rp
b24pCisgICAgZC0+bV9zZWxlY3Rpb24gPSBuZXcgU2VsZWN0aW9uKG1fZnJhbWUpOworICByZXR1
cm4gZC0+bV9zZWxlY3Rpb247CiB9CiAKIGJvb2wgV2luZG93OjpmaW5kKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBib29sIGNhc2VTZW5zaXRpdmUsIGJvb2wgYmFja3dhcmRzLCBib29sIHdyYXAsIGJv
b2wgd2hvbGVXb3JkLCBib29sIHNlYXJjaEluRnJhbWVzLCBib29sIHNob3dEaWFsb2cpIGNvbnN0
CkBAIC00MjgsNzIgKzQ1NSw3MiBAQCBib29sIFdpbmRvdzo6ZmluZChjb25zdCBTdHJpbmcmIHN0
cmluZywgCiAKIEJhckluZm8gKldpbmRvdzo6bG9jYXRpb25iYXIoRXhlY1N0YXRlICpleGVjKSBj
b25zdAogewotICBpZiAoIW1fbG9jYXRpb25iYXIpCi0gICAgbV9sb2NhdGlvbmJhciA9IG5ldyBC
YXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhckluZm86OkxvY2F0aW9uYmFyKTsKLSAgcmV0dXJuIG1f
bG9jYXRpb25iYXI7CisgIGlmICghZC0+bV9sb2NhdGlvbmJhcikKKyAgICBkLT5tX2xvY2F0aW9u
YmFyID0gbmV3IEJhckluZm8oZXhlYywgbV9mcmFtZSwgQmFySW5mbzo6TG9jYXRpb25iYXIpOwor
ICByZXR1cm4gZC0+bV9sb2NhdGlvbmJhcjsKIH0KIAogQmFySW5mbyAqV2luZG93OjptZW51YmFy
KEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKIHsKLSAgaWYgKCFtX21lbnViYXIpCi0gICAgbV9tZW51
YmFyID0gbmV3IEJhckluZm8oZXhlYywgbV9mcmFtZSwgQmFySW5mbzo6TWVudWJhcik7Ci0gIHJl
dHVybiBtX21lbnViYXI7CisgIGlmICghZC0+bV9tZW51YmFyKQorICAgIGQtPm1fbWVudWJhciA9
IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhckluZm86Ok1lbnViYXIpOworICByZXR1cm4g
ZC0+bV9tZW51YmFyOwogfQogCiBCYXJJbmZvICpXaW5kb3c6OnBlcnNvbmFsYmFyKEV4ZWNTdGF0
ZSAqZXhlYykgY29uc3QKIHsKLSAgaWYgKCFtX3BlcnNvbmFsYmFyKQotICAgIG1fcGVyc29uYWxi
YXIgPSBuZXcgQmFySW5mbyhleGVjLCBtX2ZyYW1lLCBCYXJJbmZvOjpQZXJzb25hbGJhcik7Ci0g
IHJldHVybiBtX3BlcnNvbmFsYmFyOworICBpZiAoIWQtPm1fcGVyc29uYWxiYXIpCisgICAgZC0+
bV9wZXJzb25hbGJhciA9IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhckluZm86OlBlcnNv
bmFsYmFyKTsKKyAgcmV0dXJuIGQtPm1fcGVyc29uYWxiYXI7CiB9CiAKIEJhckluZm8gKldpbmRv
dzo6c3RhdHVzYmFyKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKIHsKLSAgaWYgKCFtX3N0YXR1c2Jh
cikKLSAgICBtX3N0YXR1c2JhciA9IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhckluZm86
OlN0YXR1c2Jhcik7Ci0gIHJldHVybiBtX3N0YXR1c2JhcjsKKyAgaWYgKCFkLT5tX3N0YXR1c2Jh
cikKKyAgICBkLT5tX3N0YXR1c2JhciA9IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhcklu
Zm86OlN0YXR1c2Jhcik7CisgIHJldHVybiBkLT5tX3N0YXR1c2JhcjsKIH0KIAogQmFySW5mbyAq
V2luZG93Ojp0b29sYmFyKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKIHsKLSAgaWYgKCFtX3Rvb2xi
YXIpCi0gICAgbV90b29sYmFyID0gbmV3IEJhckluZm8oZXhlYywgbV9mcmFtZSwgQmFySW5mbzo6
VG9vbGJhcik7Ci0gIHJldHVybiBtX3Rvb2xiYXI7CisgIGlmICghZC0+bV90b29sYmFyKQorICAg
IGQtPm1fdG9vbGJhciA9IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhckluZm86OlRvb2xi
YXIpOworICByZXR1cm4gZC0+bV90b29sYmFyOwogfQogCiBCYXJJbmZvICpXaW5kb3c6OnNjcm9s
bGJhcnMoRXhlY1N0YXRlICpleGVjKSBjb25zdAogewotICBpZiAoIW1fc2Nyb2xsYmFycykKLSAg
ICBtX3Njcm9sbGJhcnMgPSBuZXcgQmFySW5mbyhleGVjLCBtX2ZyYW1lLCBCYXJJbmZvOjpTY3Jv
bGxiYXJzKTsKLSAgcmV0dXJuIG1fc2Nyb2xsYmFyczsKKyAgaWYgKCFkLT5tX3Njcm9sbGJhcnMp
CisgICAgZC0+bV9zY3JvbGxiYXJzID0gbmV3IEJhckluZm8oZXhlYywgbV9mcmFtZSwgQmFySW5m
bzo6U2Nyb2xsYmFycyk7CisgIHJldHVybiBkLT5tX3Njcm9sbGJhcnM7CiB9CiAKIC8vIHJlZmVy
ZW5jZSBvdXIgc3BlY2lhbCBvYmplY3RzIGR1cmluZyBnYXJiYWdlIGNvbGxlY3Rpb24KIHZvaWQg
V2luZG93OjptYXJrKCkKIHsKICAgSlNPYmplY3Q6Om1hcmsoKTsKLSAgaWYgKHNjcmVlbiAmJiAh
c2NyZWVuLT5tYXJrZWQoKSkKLSAgICBzY3JlZW4tPm1hcmsoKTsKLSAgaWYgKGhpc3RvcnkgJiYg
IWhpc3RvcnktPm1hcmtlZCgpKQotICAgIGhpc3RvcnktPm1hcmsoKTsKLSAgaWYgKGZyYW1lcyAm
JiAhZnJhbWVzLT5tYXJrZWQoKSkKLSAgICBmcmFtZXMtPm1hcmsoKTsKLSAgaWYgKGxvYyAmJiAh
bG9jLT5tYXJrZWQoKSkKLSAgICBsb2MtPm1hcmsoKTsKLSAgaWYgKG1fc2VsZWN0aW9uICYmICFt
X3NlbGVjdGlvbi0+bWFya2VkKCkpCi0gICAgbV9zZWxlY3Rpb24tPm1hcmsoKTsKLSAgaWYgKG1f
bG9jYXRpb25iYXIgJiYgIW1fbG9jYXRpb25iYXItPm1hcmtlZCgpKQotICAgIG1fbG9jYXRpb25i
YXItPm1hcmsoKTsKLSAgaWYgKG1fbWVudWJhciAmJiAhbV9tZW51YmFyLT5tYXJrZWQoKSkKLSAg
ICBtX21lbnViYXItPm1hcmsoKTsKLSAgaWYgKG1fcGVyc29uYWxiYXIgJiYgIW1fcGVyc29uYWxi
YXItPm1hcmtlZCgpKQotICAgIG1fcGVyc29uYWxiYXItPm1hcmsoKTsKLSAgaWYgKG1fc2Nyb2xs
YmFycyAmJiAhbV9zY3JvbGxiYXJzLT5tYXJrZWQoKSkKLSAgICBtX3Njcm9sbGJhcnMtPm1hcmso
KTsKLSAgaWYgKG1fc3RhdHVzYmFyICYmICFtX3N0YXR1c2Jhci0+bWFya2VkKCkpCi0gICAgbV9z
dGF0dXNiYXItPm1hcmsoKTsKLSAgaWYgKG1fdG9vbGJhciAmJiAhbV90b29sYmFyLT5tYXJrZWQo
KSkKLSAgICBtX3Rvb2xiYXItPm1hcmsoKTsKKyAgaWYgKGQtPnNjcmVlbiAmJiAhZC0+c2NyZWVu
LT5tYXJrZWQoKSkKKyAgICBkLT5zY3JlZW4tPm1hcmsoKTsKKyAgaWYgKGQtPmhpc3RvcnkgJiYg
IWQtPmhpc3RvcnktPm1hcmtlZCgpKQorICAgIGQtPmhpc3RvcnktPm1hcmsoKTsKKyAgaWYgKGQt
PmZyYW1lcyAmJiAhZC0+ZnJhbWVzLT5tYXJrZWQoKSkKKyAgICBkLT5mcmFtZXMtPm1hcmsoKTsK
KyAgaWYgKGQtPmxvYyAmJiAhZC0+bG9jLT5tYXJrZWQoKSkKKyAgICBkLT5sb2MtPm1hcmsoKTsK
KyAgaWYgKGQtPm1fc2VsZWN0aW9uICYmICFkLT5tX3NlbGVjdGlvbi0+bWFya2VkKCkpCisgICAg
ZC0+bV9zZWxlY3Rpb24tPm1hcmsoKTsKKyAgaWYgKGQtPm1fbG9jYXRpb25iYXIgJiYgIWQtPm1f
bG9jYXRpb25iYXItPm1hcmtlZCgpKQorICAgIGQtPm1fbG9jYXRpb25iYXItPm1hcmsoKTsKKyAg
aWYgKGQtPm1fbWVudWJhciAmJiAhZC0+bV9tZW51YmFyLT5tYXJrZWQoKSkKKyAgICBkLT5tX21l
bnViYXItPm1hcmsoKTsKKyAgaWYgKGQtPm1fcGVyc29uYWxiYXIgJiYgIWQtPm1fcGVyc29uYWxi
YXItPm1hcmtlZCgpKQorICAgIGQtPm1fcGVyc29uYWxiYXItPm1hcmsoKTsKKyAgaWYgKGQtPm1f
c2Nyb2xsYmFycyAmJiAhZC0+bV9zY3JvbGxiYXJzLT5tYXJrZWQoKSkKKyAgICBkLT5tX3Njcm9s
bGJhcnMtPm1hcmsoKTsKKyAgaWYgKGQtPm1fc3RhdHVzYmFyICYmICFkLT5tX3N0YXR1c2Jhci0+
bWFya2VkKCkpCisgICAgZC0+bV9zdGF0dXNiYXItPm1hcmsoKTsKKyAgaWYgKGQtPm1fdG9vbGJh
ciAmJiAhZC0+bV90b29sYmFyLT5tYXJrZWQoKSkKKyAgICBkLT5tX3Rvb2xiYXItPm1hcmsoKTsK
IH0KIAogVVN0cmluZyBXaW5kb3c6OnRvU3RyaW5nKEV4ZWNTdGF0ZSAqKSBjb25zdApAQCAtNzEy
LDE3ICs3MzksMTcgQEAgSlNWYWx1ZSAqV2luZG93OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdAog
ICAgY2FzZSBTdGF0dXM6CiAgICAgICByZXR1cm4ganNTdHJpbmcoVVN0cmluZyhtX2ZyYW1lLT5q
c1N0YXR1c0JhclRleHQoKSkpOwogICAgIGNhc2UgRnJhbWVzOgotICAgICAgaWYgKCFmcmFtZXMp
Ci0gICAgICAgIGZyYW1lcyA9IG5ldyBGcmFtZUFycmF5KGV4ZWMsIG1fZnJhbWUpOwotICAgICAg
cmV0dXJuIGZyYW1lczsKKyAgICAgIGlmICghZC0+ZnJhbWVzKQorICAgICAgICBkLT5mcmFtZXMg
PSBuZXcgRnJhbWVBcnJheShleGVjLCBtX2ZyYW1lKTsKKyAgICAgIHJldHVybiBkLT5mcmFtZXM7
CiAgICAgY2FzZSBIaXN0b3J5XzoKLSAgICAgIGlmICghaGlzdG9yeSkKLSAgICAgICAgaGlzdG9y
eSA9IG5ldyBIaXN0b3J5KGV4ZWMsIG1fZnJhbWUpOwotICAgICAgcmV0dXJuIGhpc3Rvcnk7Cisg
ICAgICBpZiAoIWQtPmhpc3RvcnkpCisgICAgICAgIGQtPmhpc3RvcnkgPSBuZXcgSGlzdG9yeShl
eGVjLCBtX2ZyYW1lKTsKKyAgICAgIHJldHVybiBkLT5oaXN0b3J5OwogICAgIGNhc2UgRXZlbnRf
OgotICAgICAgaWYgKCFtX2V2dCkKKyAgICAgIGlmICghZC0+bV9ldnQpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwotICAgICAgcmV0dXJuIHRvSlMoZXhlYywgbV9ldnQpOworICAgICAg
cmV0dXJuIHRvSlMoZXhlYywgZC0+bV9ldnQpOwogICAgIGNhc2UgSW5uZXJIZWlnaHQ6CiAgICAg
ICBpZiAoIW1fZnJhbWUtPnZpZXcoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkBA
IC04MDMsOSArODMwLDkgQEAgSlNWYWx1ZSAqV2luZG93OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNT
dAogICAgIGNhc2UgVG9wOgogICAgICAgcmV0dXJuIHJldHJpZXZlKG1fZnJhbWUtPnBhZ2UoKS0+
bWFpbkZyYW1lKCkpOwogICAgIGNhc2UgU2NyZWVuXzoKLSAgICAgIGlmICghc2NyZWVuKQotICAg
ICAgICBzY3JlZW4gPSBuZXcgU2NyZWVuKGV4ZWMsIG1fZnJhbWUpOwotICAgICAgcmV0dXJuIHNj
cmVlbjsKKyAgICAgIGlmICghZC0+c2NyZWVuKQorICAgICAgICBkLT5zY3JlZW4gPSBuZXcgU2Ny
ZWVuKGV4ZWMsIG1fZnJhbWUpOworICAgICAgcmV0dXJuIGQtPnNjcmVlbjsKICAgICBjYXNlIElt
YWdlOgogICAgICAgLy8gRklYTUU6IHRoaXMgcHJvcGVydHkgKGFuZCB0aGUgZmV3IGJlbG93KSBw
cm9iYWJseSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9iamVjdCBldmVyeQogICAgICAgLy8gdGlt
ZQpAQCAtMTMxOCw3ICsxMzQ1LDcgQEAgSlNFdmVudExpc3RlbmVyKiBXaW5kb3c6OmZpbmRKU0V2
ZW50TGlzdAogICAgIGlmICghdmFsLT5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKICAg
ICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPih2YWwpOwotICAgIExp
c3RlbmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzSFRNTEV2ZW50TGlzdGVuZXJzIDoganNF
dmVudExpc3RlbmVyczsKKyAgICBMaXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IGh0bWwgPyBkLT5q
c0hUTUxFdmVudExpc3RlbmVycyA6IGQtPmpzRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0dXJuIGxp
c3RlbmVycy5nZXQob2JqZWN0KTsKIH0KIApAQCAtMTM0MSw3ICsxMzY4LDcgQEAgSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqIFdpbmRvdzo6ZmluZAogICAgIGlmICghdmFsLT5pc09iamVjdCgp
KQogICAgICAgICByZXR1cm4gMDsKICAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8
SlNPYmplY3QqPih2YWwpOwotICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMg
PSBodG1sID8ganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycyA6IGpzVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyczsKKyAgICBVbnByb3RlY3RlZExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0g
aHRtbCA/IGQtPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMgOiBkLT5qc1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcnM7CiAgICAgcmV0dXJuIGxpc3RlbmVycy5nZXQob2JqZWN0KTsKIH0K
IApAQCAtMTM2MSwyNiArMTM4OCwyNiBAQCBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciAqV2lu
ZG93OjpmaW5kCiAKIHZvaWQgV2luZG93OjpjbGVhckhlbHBlck9iamVjdFByb3BlcnRpZXMoKQog
ewotICBzY3JlZW4gPSAwOwotICBoaXN0b3J5ID0gMDsKLSAgZnJhbWVzID0gMDsKLSAgbG9jID0g
MDsKLSAgbV9zZWxlY3Rpb24gPSAwOwotICBtX2xvY2F0aW9uYmFyID0gMDsKLSAgbV9tZW51YmFy
ID0gMDsKLSAgbV9wZXJzb25hbGJhciA9IDA7Ci0gIG1fc2Nyb2xsYmFycyA9IDA7Ci0gIG1fc3Rh
dHVzYmFyID0gMDsKLSAgbV90b29sYmFyID0gMDsKLSAgbV9ldnQgPSAwOworICBkLT5zY3JlZW4g
PSAwOworICBkLT5oaXN0b3J5ID0gMDsKKyAgZC0+ZnJhbWVzID0gMDsKKyAgZC0+bG9jID0gMDsK
KyAgZC0+bV9zZWxlY3Rpb24gPSAwOworICBkLT5tX2xvY2F0aW9uYmFyID0gMDsKKyAgZC0+bV9t
ZW51YmFyID0gMDsKKyAgZC0+bV9wZXJzb25hbGJhciA9IDA7CisgIGQtPm1fc2Nyb2xsYmFycyA9
IDA7CisgIGQtPm1fc3RhdHVzYmFyID0gMDsKKyAgZC0+bV90b29sYmFyID0gMDsKKyAgZC0+bV9l
dnQgPSAwOwogfQogCiB2b2lkIFdpbmRvdzo6Y2xlYXIoKQogewogICBKU0xvY2sgbG9jazsKIAot
ICBpZiAobV9yZXR1cm5WYWx1ZVNsb3QgJiYgISptX3JldHVyblZhbHVlU2xvdCkKLSAgICAqbV9y
ZXR1cm5WYWx1ZVNsb3QgPSBnZXREaXJlY3QoInJldHVyblZhbHVlIik7CisgIGlmIChkLT5tX3Jl
dHVyblZhbHVlU2xvdCAmJiAhKmQtPm1fcmV0dXJuVmFsdWVTbG90KQorICAgICpkLT5tX3JldHVy
blZhbHVlU2xvdCA9IGdldERpcmVjdCgicmV0dXJuVmFsdWUiKTsKIAogICBjbGVhckFsbFRpbWVv
dXRzKCk7CiAgIGNsZWFyUHJvcGVydGllcygpOwpAQCAtMTM5OCw3ICsxNDI1LDcgQEAgdm9pZCBX
aW5kb3c6OmNsZWFyKCkKIAogdm9pZCBXaW5kb3c6OnNldEN1cnJlbnRFdmVudChFdmVudCAqZXZ0
KQogewotICBtX2V2dCA9IGV2dDsKKyAgZC0+bV9ldnQgPSBldnQ7CiB9CiAKIHN0YXRpYyB2b2lk
IHNldFdpbmRvd0ZlYXR1cmUoY29uc3QgU3RyaW5nJiBrZXlTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dmFsdWVTdHJpbmcsIFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcykKQEAgLTE4NTksNiAr
MTg4NiwxMSBAQCB2b2lkIFdpbmRvdzo6dXBkYXRlTGF5b3V0KCkgY29uc3QKICAgICBkb2NpbXBs
LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIH0KIAordm9pZCBXaW5k
b3c6OnNldFJldHVyblZhbHVlU2xvdChKU1ZhbHVlICoqc2xvdCkKK3sgCisgICAgZC0+bV9yZXR1
cm5WYWx1ZVNsb3QgPSBzbG90OyAKK30KKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyBTY2hlZHVs
ZWRBY3Rpb24gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlKFdpbmRvdyogd2luZG93KQpAQCAtMTkxMiw4ICsxOTQ0LDggQEAgdm9pZCBTY2hl
ZHVsZWRBY3Rpb246OmV4ZWN1dGUoV2luZG93KiB3aQogCiB2b2lkIFdpbmRvdzo6Y2xlYXJBbGxU
aW1lb3V0cygpCiB7Ci0gICAgZGVsZXRlQWxsVmFsdWVzKG1fdGltZW91dHMpOwotICAgIG1fdGlt
ZW91dHMuY2xlYXIoKTsKKyAgICBkZWxldGVBbGxWYWx1ZXMoZC0+bV90aW1lb3V0cyk7CisgICAg
ZC0+bV90aW1lb3V0cy5jbGVhcigpOwogfQogCiBpbnQgV2luZG93OjppbnN0YWxsVGltZW91dChT
Y2hlZHVsZWRBY3Rpb24qIGEsIGludCB0LCBib29sIHNpbmdsZVNob3QpCkBAIC0xOTIxLDggKzE5
NTMsOCBAQCBpbnQgV2luZG93OjppbnN0YWxsVGltZW91dChTY2hlZHVsZWRBY3RpCiAgICAgaW50
IHRpbWVvdXRJZCA9ICsrbGFzdFVzZWRUaW1lb3V0SWQ7CiAgICAgaW50IG5lc3RMZXZlbCA9IHRp
bWVyTmVzdGluZ0xldmVsICsgMTsKICAgICBET01XaW5kb3dUaW1lciogdGltZXIgPSBuZXcgRE9N
V2luZG93VGltZXIodGltZW91dElkLCBuZXN0TGV2ZWwsIHRoaXMsIGEpOwotICAgIEFTU0VSVCgh
bV90aW1lb3V0cy5nZXQodGltZW91dElkKSk7Ci0gICAgbV90aW1lb3V0cy5zZXQodGltZW91dElk
LCB0aW1lcik7CisgICAgQVNTRVJUKCFkLT5tX3RpbWVvdXRzLmdldCh0aW1lb3V0SWQpKTsKKyAg
ICBkLT5tX3RpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsKICAgICAvLyBVc2UgYSBtaW5p
bXVtIGludGVydmFsIG9mIDEwIG1zIHRvIG1hdGNoIG90aGVyIGJyb3dzZXJzLCBidXQgb25seSBv
bmNlIHdlJ3ZlCiAgICAgLy8gbmVzdGVkIGVub3VnaCB0byBub3RpY2UgdGhhdCB3ZSdyZSByZXBl
YXRpbmcuCiAgICAgLy8gRmFzdGVyIHRpbWVycyBtaWdodCBiZSAiYmV0dGVyIiwgYnV0IHRoZXkn
cmUgaW5jb21wYXRpYmxlLgpAQCAtMTk0OCwxNCArMTk4MCwxNCBAQCBpbnQgV2luZG93OjppbnN0
YWxsVGltZW91dChKU1ZhbHVlKiBmdW5jCiAKIFBhdXNlZFRpbWVvdXRzKiBXaW5kb3c6OnBhdXNl
VGltZW91dHMoKQogewotICAgIHNpemVfdCBjb3VudCA9IG1fdGltZW91dHMuc2l6ZSgpOworICAg
IHNpemVfdCBjb3VudCA9IGQtPm1fdGltZW91dHMuc2l6ZSgpOwogICAgIGlmIChjb3VudCA9PSAw
KQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFBhdXNlZFRpbWVvdXQqIHQgPSBuZXcgUGF1c2Vk
VGltZW91dCBbY291bnRdOwogICAgIFBhdXNlZFRpbWVvdXRzKiByZXN1bHQgPSBuZXcgUGF1c2Vk
VGltZW91dHModCwgY291bnQpOwogCi0gICAgVGltZW91dHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV90
aW1lb3V0cy5iZWdpbigpOworICAgIFdpbmRvd1ByaXZhdGU6OlRpbWVvdXRzTWFwOjppdGVyYXRv
ciBpdCA9IGQtPm1fdGltZW91dHMuYmVnaW4oKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAh
PSBjb3VudDsgKytpLCArK2l0KSB7CiAgICAgICAgIGludCB0aW1lb3V0SWQgPSBpdC0+Zmlyc3Q7
CiAgICAgICAgIERPTVdpbmRvd1RpbWVyKiB0aW1lciA9IGl0LT5zZWNvbmQ7CkBAIC0xOTY1LDEw
ICsxOTk3LDEwIEBAIFBhdXNlZFRpbWVvdXRzKiBXaW5kb3c6OnBhdXNlVGltZW91dHMoKQogICAg
ICAgICB0W2ldLnJlcGVhdEludGVydmFsID0gdGltZXItPnJlcGVhdEludGVydmFsKCk7CiAgICAg
ICAgIHRbaV0uYWN0aW9uID0gdGltZXItPnRha2VBY3Rpb24oKTsKICAgICB9Ci0gICAgQVNTRVJU
KGl0ID09IG1fdGltZW91dHMuZW5kKCkpOworICAgIEFTU0VSVChpdCA9PSBkLT5tX3RpbWVvdXRz
LmVuZCgpKTsKIAotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3RpbWVvdXRzKTsKLSAgICBtX3RpbWVv
dXRzLmNsZWFyKCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKGQtPm1fdGltZW91dHMpOworICAgIGQt
Pm1fdGltZW91dHMuY2xlYXIoKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xOTgyLDcg
KzIwMTQsNyBAQCB2b2lkIFdpbmRvdzo6cmVzdW1lVGltZW91dHMoUGF1c2VkVGltZW91CiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgIT0gY291bnQ7ICsraSkgewogICAgICAgICBpbnQgdGltZW91
dElkID0gYXJyYXlbaV0udGltZW91dElkOwogICAgICAgICBET01XaW5kb3dUaW1lciogdGltZXIg
PSBuZXcgRE9NV2luZG93VGltZXIodGltZW91dElkLCBhcnJheVtpXS5uZXN0aW5nTGV2ZWwsIHRo
aXMsIGFycmF5W2ldLmFjdGlvbik7Ci0gICAgICAgIG1fdGltZW91dHMuc2V0KHRpbWVvdXRJZCwg
dGltZXIpOworICAgICAgICBkLT5tX3RpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsKICAg
ICAgICAgdGltZXItPnN0YXJ0KGFycmF5W2ldLm5leHRGaXJlSW50ZXJ2YWwsIGFycmF5W2ldLnJl
cGVhdEludGVydmFsKTsKICAgICB9CiAgICAgZGVsZXRlIFtdIGFycmF5OwpAQCAtMTk5MCwxMSAr
MjAyMiwxMSBAQCB2b2lkIFdpbmRvdzo6cmVzdW1lVGltZW91dHMoUGF1c2VkVGltZW91CiAKIHZv
aWQgV2luZG93OjpjbGVhclRpbWVvdXQoaW50IHRpbWVvdXRJZCwgYm9vbCBkZWxBY3Rpb24pCiB7
Ci0gICAgVGltZW91dHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV90aW1lb3V0cy5maW5kKHRpbWVvdXRJ
ZCk7Ci0gICAgaWYgKGl0ID09IG1fdGltZW91dHMuZW5kKCkpCisgICAgV2luZG93UHJpdmF0ZTo6
VGltZW91dHNNYXA6Oml0ZXJhdG9yIGl0ID0gZC0+bV90aW1lb3V0cy5maW5kKHRpbWVvdXRJZCk7
CisgICAgaWYgKGl0ID09IGQtPm1fdGltZW91dHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAg
ICBET01XaW5kb3dUaW1lciogdGltZXIgPSBpdC0+c2Vjb25kOwotICAgIG1fdGltZW91dHMucmVt
b3ZlKGl0KTsKKyAgICBkLT5tX3RpbWVvdXRzLnJlbW92ZShpdCk7CiAgICAgZGVsZXRlIHRpbWVy
OwogfQogCkBAIC0yMDA1LDcgKzIwMzcsNyBAQCB2b2lkIFdpbmRvdzo6dGltZXJGaXJlZChET01X
aW5kb3dUaW1lciogCiAgICAgICAgIGludCB0aW1lb3V0SWQgPSB0aW1lci0+dGltZW91dElkKCk7
CiAKICAgICAgICAgdGltZXItPmFjdGlvbigpLT5leGVjdXRlKHRoaXMpOwotICAgICAgICBpZiAo
bV90aW1lb3V0cy5jb250YWlucyh0aW1lb3V0SWQpICYmIHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgp
ICYmIHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpIDwgY01pbmltdW1UaW1lckludGVydmFsKSB7Cisg
ICAgICAgIGlmIChkLT5tX3RpbWVvdXRzLmNvbnRhaW5zKHRpbWVvdXRJZCkgJiYgdGltZXItPnJl
cGVhdEludGVydmFsKCkgJiYgdGltZXItPnJlcGVhdEludGVydmFsKCkgPCBjTWluaW11bVRpbWVy
SW50ZXJ2YWwpIHsKICAgICAgICAgICAgIHRpbWVyLT5zZXROZXN0aW5nTGV2ZWwodGltZXItPm5l
c3RpbmdMZXZlbCgpICsgMSk7CiAgICAgICAgICAgICBpZiAodGltZXItPm5lc3RpbmdMZXZlbCgp
ID49IGNNYXhUaW1lck5lc3RpbmdMZXZlbCkKICAgICAgICAgICAgICAgICB0aW1lci0+YXVnbWVu
dFJlcGVhdEludGVydmFsKGNNaW5pbXVtVGltZXJJbnRlcnZhbCAtIHRpbWVyLT5yZXBlYXRJbnRl
cnZhbCgpKTsKQEAgLTIwMTUsNyArMjA0Nyw3IEBAIHZvaWQgV2luZG93Ojp0aW1lckZpcmVkKERP
TVdpbmRvd1RpbWVyKiAKIAogICAgIC8vIERlbGV0ZSB0aW1lciBiZWZvcmUgZXhlY3V0aW5nIHRo
ZSBhY3Rpb24gZm9yIG9uZS1zaG90IHRpbWVycy4KICAgICBTY2hlZHVsZWRBY3Rpb24qIGFjdGlv
biA9IHRpbWVyLT50YWtlQWN0aW9uKCk7Ci0gICAgbV90aW1lb3V0cy5yZW1vdmUodGltZXItPnRp
bWVvdXRJZCgpKTsKKyAgICBkLT5tX3RpbWVvdXRzLnJlbW92ZSh0aW1lci0+dGltZW91dElkKCkp
OwogICAgIGRlbGV0ZSB0aW1lcjsKICAgICBhY3Rpb24tPmV4ZWN1dGUodGhpcyk7CiAgICAgCkBA
IC0yMDI3LDI2ICsyMDU5LDQ2IEBAIHZvaWQgV2luZG93OjpkaXNjb25uZWN0RnJhbWUoKQogewog
ICAgIGNsZWFyQWxsVGltZW91dHMoKTsKICAgICBtX2ZyYW1lID0gMDsKLSAgICBpZiAobG9jKQot
ICAgICAgICBsb2MtPm1fZnJhbWUgPSAwOwotICAgIGlmIChtX3NlbGVjdGlvbikKLSAgICAgICAg
bV9zZWxlY3Rpb24tPm1fZnJhbWUgPSAwOwotICAgIGlmIChtX2xvY2F0aW9uYmFyKQotICAgICAg
ICBtX2xvY2F0aW9uYmFyLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV9tZW51YmFyKQotICAgICAg
ICBtX21lbnViYXItPm1fZnJhbWUgPSAwOwotICAgIGlmIChtX3BlcnNvbmFsYmFyKQotICAgICAg
ICBtX3BlcnNvbmFsYmFyLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV9zdGF0dXNiYXIpCi0gICAg
ICAgIG1fc3RhdHVzYmFyLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV90b29sYmFyKQotICAgICAg
ICBtX3Rvb2xiYXItPm1fZnJhbWUgPSAwOwotICAgIGlmIChtX3Njcm9sbGJhcnMpCi0gICAgICAg
IG1fc2Nyb2xsYmFycy0+bV9mcmFtZSA9IDA7Ci0gICAgaWYgKGZyYW1lcykKLSAgICAgICAgZnJh
bWVzLT5kaXNjb25uZWN0RnJhbWUoKTsKLSAgICBpZiAoaGlzdG9yeSkKLSAgICAgICAgaGlzdG9y
eS0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgaWYgKGQtPmxvYykKKyAgICAgICAgZC0+bG9jLT5t
X2ZyYW1lID0gMDsKKyAgICBpZiAoZC0+bV9zZWxlY3Rpb24pCisgICAgICAgIGQtPm1fc2VsZWN0
aW9uLT5tX2ZyYW1lID0gMDsKKyAgICBpZiAoZC0+bV9sb2NhdGlvbmJhcikKKyAgICAgICAgZC0+
bV9sb2NhdGlvbmJhci0+bV9mcmFtZSA9IDA7CisgICAgaWYgKGQtPm1fbWVudWJhcikKKyAgICAg
ICAgZC0+bV9tZW51YmFyLT5tX2ZyYW1lID0gMDsKKyAgICBpZiAoZC0+bV9wZXJzb25hbGJhcikK
KyAgICAgICAgZC0+bV9wZXJzb25hbGJhci0+bV9mcmFtZSA9IDA7CisgICAgaWYgKGQtPm1fc3Rh
dHVzYmFyKQorICAgICAgICBkLT5tX3N0YXR1c2Jhci0+bV9mcmFtZSA9IDA7CisgICAgaWYgKGQt
Pm1fdG9vbGJhcikKKyAgICAgICAgZC0+bV90b29sYmFyLT5tX2ZyYW1lID0gMDsKKyAgICBpZiAo
ZC0+bV9zY3JvbGxiYXJzKQorICAgICAgICBkLT5tX3Njcm9sbGJhcnMtPm1fZnJhbWUgPSAwOwor
ICAgIGlmIChkLT5mcmFtZXMpCisgICAgICAgIGQtPmZyYW1lcy0+ZGlzY29ubmVjdEZyYW1lKCk7
CisgICAgaWYgKGQtPmhpc3RvcnkpCisgICAgICAgIGQtPmhpc3RvcnktPmRpc2Nvbm5lY3RGcmFt
ZSgpOworfQorCitXaW5kb3c6Okxpc3RlbmVyc01hcCYgV2luZG93Ojpqc0V2ZW50TGlzdGVuZXJz
KCkKK3sKKyAgICByZXR1cm4gZC0+anNFdmVudExpc3RlbmVyczsKK30KKworV2luZG93OjpMaXN0
ZW5lcnNNYXAmIFdpbmRvdzo6anNIVE1MRXZlbnRMaXN0ZW5lcnMoKQoreworICAgIHJldHVybiBk
LT5qc0hUTUxFdmVudExpc3RlbmVyczsKK30KKworV2luZG93OjpVbnByb3RlY3RlZExpc3RlbmVy
c01hcCYgV2luZG93Ojpqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnMoKQoreworICAgIHJldHVy
biBkLT5qc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7Cit9CisKK1dpbmRvdzo6VW5wcm90ZWN0
ZWRMaXN0ZW5lcnNNYXAmIFdpbmRvdzo6anNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycygp
Cit7CisgICAgcmV0dXJuIGQtPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnM7CiB9CiAK
IGNvbnN0IENsYXNzSW5mbyBGcmFtZUFycmF5OjppbmZvID0geyAiRnJhbWVBcnJheSIsIDAsICZG
cmFtZUFycmF5VGFibGUsIDAgfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRv
dy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5oCShyZXZp
c2lvbiAyMDkxNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5oCSh3b3JraW5n
IGNvcHkpCkBAIC04MCw2ICs4MCw4IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIFdlYkNvcmU6OkZy
YW1lKiBtX2ZyYW1lOwogICB9OwogCisgIGNsYXNzIFdpbmRvd1ByaXZhdGU7CisKICAgY2xhc3Mg
V2luZG93IDogcHVibGljIERPTU9iamVjdCB7CiAgICAgZnJpZW5kIGNsYXNzIExvY2F0aW9uOwog
ICAgIGZyaWVuZCBjbGFzcyBXaW5kb3dGdW5jOwpAQCAtMTU2LDE0ICsxNTgsMTYgQEAgbmFtZXNw
YWNlIEtKUyB7CiAgICAgdm9pZCBzZXRDdXJyZW50RXZlbnQoV2ViQ29yZTo6RXZlbnQqKTsKIAog
ICAgIC8vIFNldCBhIHBsYWNlIHRvIHB1dCBhIGRpYWxvZyByZXR1cm4gdmFsdWUgd2hlbiB0aGUg
d2luZG93IGlzIGNsZWFyZWQuCi0gICAgdm9pZCBzZXRSZXR1cm5WYWx1ZVNsb3QoSlNWYWx1ZSAq
KnNsb3QpIHsgbV9yZXR1cm5WYWx1ZVNsb3QgPSBzbG90OyB9CisgICAgdm9pZCBzZXRSZXR1cm5W
YWx1ZVNsb3QoSlNWYWx1ZSAqKnNsb3QpOwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPEpTT2JqZWN0
KiwgSlNFdmVudExpc3RlbmVyKj4gTGlzdGVuZXJzTWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxK
U09iamVjdCosIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4gVW5wcm90ZWN0ZWRMaXN0ZW5l
cnNNYXA7Ci0gICAgTGlzdGVuZXJzTWFwIGpzRXZlbnRMaXN0ZW5lcnM7Ci0gICAgTGlzdGVuZXJz
TWFwIGpzSFRNTEV2ZW50TGlzdGVuZXJzOwotICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwIGpz
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyczsKLSAgICBVbnByb3RlY3RlZExpc3RlbmVyc01hcCBq
c1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVuZXJzOworICAgIAorICAgIExpc3RlbmVyc01hcCYg
anNFdmVudExpc3RlbmVycygpOworICAgIExpc3RlbmVyc01hcCYganNIVE1MRXZlbnRMaXN0ZW5l
cnMoKTsKKyAgICBVbnByb3RlY3RlZExpc3RlbmVyc01hcCYganNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXJzKCk7CisgICAgVW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAmIGpzVW5wcm90ZWN0ZWRIVE1M
RXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xh
c3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJ
bmZvIGluZm87CiAgICAgZW51bSB7IEFUb0IsIEJUb0EsIENsb3NlZCwgQ3J5cHRvLCBEZWZhdWx0
U3RhdHVzLCBTdGF0dXMsIERPTUV4Y2VwdGlvbiwgRnJhbWVzLCBIaXN0b3J5XywgRXZlbnRfLCBJ
bm5lckhlaWdodCwKQEAgLTE5OCwyMSArMjAyLDcgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgaW50
IGluc3RhbGxUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiosIGludCBpbnRlcnZhbCwgYm9vbCBzaW5n
bGVTaG90KTsKIAogICAgIFdlYkNvcmU6OkZyYW1lKiBtX2ZyYW1lOwotICAgIG11dGFibGUgU2Ny
ZWVuKiBzY3JlZW47Ci0gICAgbXV0YWJsZSBIaXN0b3J5KiBoaXN0b3J5OwotICAgIG11dGFibGUg
RnJhbWVBcnJheSogZnJhbWVzOwotICAgIG11dGFibGUgTG9jYXRpb24qIGxvYzsKLSAgICBtdXRh
YmxlIFNlbGVjdGlvbiogbV9zZWxlY3Rpb247Ci0gICAgbXV0YWJsZSBCYXJJbmZvKiBtX2xvY2F0
aW9uYmFyOwotICAgIG11dGFibGUgQmFySW5mbyogbV9tZW51YmFyOwotICAgIG11dGFibGUgQmFy
SW5mbyogbV9wZXJzb25hbGJhcjsKLSAgICBtdXRhYmxlIEJhckluZm8qIG1fc2Nyb2xsYmFyczsK
LSAgICBtdXRhYmxlIEJhckluZm8qIG1fc3RhdHVzYmFyOwotICAgIG11dGFibGUgQmFySW5mbyog
bV90b29sYmFyOwotICAgIFdlYkNvcmU6OkV2ZW50ICptX2V2dDsKLSAgICBKU1ZhbHVlICoqbV9y
ZXR1cm5WYWx1ZVNsb3Q7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPGludCwgRE9NV2luZG93VGltZXIq
PiBUaW1lb3V0c01hcDsKLSAgICBUaW1lb3V0c01hcCBtX3RpbWVvdXRzOworICAgIE93blB0cjxX
aW5kb3dQcml2YXRlPiBkOwogICB9OwogCiAgIC8qKgo=
</data>
<flag name="review"
          id="5677"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14081</attachid>
            <date>2007-04-18 14:56:29 -0700</date>
            <delta_ts>2007-04-18 21:13:35 -0700</delta_ts>
            <desc>omitting optimization level changes</desc>
            <filename>01-js-gc-window-not-oversize.patch.txt</filename>
            <type>text/plain</type>
            <size>23592</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDkxNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMDctMDQtMTcgIE1hY2llaiBTdGFjaG93aWFrICA8bWpzQGFwcGxl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAt
IG1vdmUgbW9zdCBvZiBXaW5kb3cncyBkYXRhIG1lbWJlcnMgaW50byBhIHNlcGFyYXRlIHByaXZh
dGUgb2JqZWN0LCB0byBhdm9pZCBuZWVkaW5nCisgICAgICAgIHRvIHVzZSB0aGUgb3ZlcnNpemUg
YWxsb2NhdG9yIGZvciBpdAorICAgICAgICAKKyAgICAgICAgSXQgd2FzIHRoZSBvbmx5IHJlbWFp
bmluZyBKU09iamVjdCBzdWJjbGFzcyB0byB1c2UgdGhlIG92ZXJzaXplCisgICAgICAgIGFsbG9j
YXRvciBvbiAzMi1iaXQgcGxhdGZvcm1zLCBhbmQgaGF2aW5nIG92ZXJzaXplIG9iamVjdHMgYXJv
dW5kCisgICAgICAgIG1ha2VzIGdhcmJhZ2UgY29sbGVjdGlvbiBzbG93ZXIgc28gdGhpcyB3b3Vs
ZCBodXJ0IHBlcmZvcm1hbmNlCisgICAgICAgIHdpdGggbWFueSB0YWJzL3dpbmRvd3Mgb3Blbi4K
KyAgICAgICAgCisgICAgICAgIE5vIHNpZ25pZmljYW50IGVmZmVjdCBvbiBKUyBpQmVuY2guCisK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfZXZlbnRzLmNwcDoKKyAgICAgICAgKEtKUzo6SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXI6OkpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKToKKyAg
ICAgICAgKEtKUzo6SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI6On5KU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChLSlM6OkpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKEtKUzo6SlNFdmVudExpc3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKEtKUzo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcDoKKyAgICAgICAgKEtKUzo6V2luZG93UHJpdmF0
ZTo6V2luZG93UHJpdmF0ZSk6CisgICAgICAgIChLSlM6OldpbmRvdzo6V2luZG93KToKKyAgICAg
ICAgKEtKUzo6V2luZG93Ojp+V2luZG93KToKKyAgICAgICAgKEtKUzo6V2luZG93Ojpsb2NhdGlv
bik6CisgICAgICAgIChLSlM6OldpbmRvdzo6c2VsZWN0aW9uKToKKyAgICAgICAgKEtKUzo6V2lu
ZG93Ojpsb2NhdGlvbmJhcik6CisgICAgICAgIChLSlM6OldpbmRvdzo6bWVudWJhcik6CisgICAg
ICAgIChLSlM6OldpbmRvdzo6cGVyc29uYWxiYXIpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OnN0
YXR1c2Jhcik6CisgICAgICAgIChLSlM6OldpbmRvdzo6dG9vbGJhcik6CisgICAgICAgIChLSlM6
OldpbmRvdzo6c2Nyb2xsYmFycyk6CisgICAgICAgIChLSlM6OldpbmRvdzo6bWFyayk6CisgICAg
ICAgIChLSlM6OldpbmRvdzo6Z2V0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OldpbmRv
dzo6ZmluZEpTRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChLSlM6OldpbmRvdzo6ZmluZEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKEtKUzo6V2luZG93OjpjbGVhckhlbHBl
ck9iamVjdFByb3BlcnRpZXMpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmNsZWFyKToKKyAgICAg
ICAgKEtKUzo6V2luZG93OjpzZXRDdXJyZW50RXZlbnQpOgorICAgICAgICAoS0pTOjpXaW5kb3c6
OnNldFJldHVyblZhbHVlU2xvdCk6CisgICAgICAgIChLSlM6OldpbmRvdzo6Y2xlYXJBbGxUaW1l
b3V0cyk6CisgICAgICAgIChLSlM6OldpbmRvdzo6aW5zdGFsbFRpbWVvdXQpOgorICAgICAgICAo
S0pTOjpXaW5kb3c6OnBhdXNlVGltZW91dHMpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OnJlc3Vt
ZVRpbWVvdXRzKToKKyAgICAgICAgKEtKUzo6V2luZG93OjpjbGVhclRpbWVvdXQpOgorICAgICAg
ICAoS0pTOjpXaW5kb3c6OnRpbWVyRmlyZWQpOgorICAgICAgICAoS0pTOjpXaW5kb3c6OmRpc2Nv
bm5lY3RGcmFtZSk6CisgICAgICAgIChLSlM6OldpbmRvdzo6anNFdmVudExpc3RlbmVycyk6Cisg
ICAgICAgIChLSlM6OldpbmRvdzo6anNIVE1MRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAoS0pT
OjpXaW5kb3c6OmpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChLSlM6Oldp
bmRvdzo6anNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycyk6CisgICAgICAgICogYmluZGlu
Z3MvanMva2pzX3dpbmRvdy5oOgorCiAyMDA3LTA0LTE2ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHpl
ckB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoZml4ZWQgbWlzc3Bl
bGxpbmcpLgpAQCAtMTE3NCw3ICsxMjI3LDYgQEAKICAgICAgICAgICByZXR1cm5zIHRoZSByb3Rh
dGVkIGJvdW5kcyBub3cgLS0gdGhpcyBpcyBhbHNvIHNhdmUgdGhlIG9sZCAKICAgICAgICAgICBG
bG9hdFNpemUgLT4gSW50U2l6ZSAtPiBGbG9hdFNpemUgY29udmVyc2lvbnMuCiAgICAgICAgICAg
Ci0KIDIwMDctMDQtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
ZXZlbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19ldmVudHMu
Y3BwCShyZXZpc2lvbiAyMDkxNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2V2ZW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NSw4ICsxNjUsOCBAQCBKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lcjo6SlNVbnByb3RlY3RlCiAgICwgd2luKF93aW4pCiB7CiAgICAgaWYgKF9saXN0ZW5l
cikgewotICAgICAgICBXaW5kb3c6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMg
PSBfaHRtbAotICAgICAgICAgICAgPyBfd2luLT5qc1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVu
ZXJzIDogX3dpbi0+anNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzOworICAgICAgICBXaW5kb3c6
OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBfaHRtbCAKKyAgICAgICAgICAg
ID8gX3dpbi0+anNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVycygpIDogX3dpbi0+anNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIGxpc3RlbmVycy5zZXQoX2xpc3RlbmVy
LCB0aGlzKTsKICAgICB9CiB9CkBAIC0xNzUsNyArMTc1LDcgQEAgSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXI6On5KU1VucHJvdGVjdAogewogICAgIGlmIChsaXN0ZW5lciAmJiB3aW4pIHsKICAg
ICAgICAgV2luZG93OjpVbnByb3RlY3RlZExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0gaXNIVE1M
RXZlbnRMaXN0ZW5lcigpCi0gICAgICAgICAgICA/IHdpbi0+anNVbnByb3RlY3RlZEhUTUxFdmVu
dExpc3RlbmVycyA6IHdpbi0+anNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzOworICAgICAgICAg
ICAgPyB3aW4tPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMoKSA6IHdpbi0+anNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXJzKCk7CiAgICAgICAgIGxpc3RlbmVycy5yZW1vdmUobGlzdGVu
ZXIpOwogICAgIH0KIH0KQEAgLTIyOCw3ICsyMjgsNyBAQCBKU0V2ZW50TGlzdGVuZXI6OkpTRXZl
bnRMaXN0ZW5lcihKU09iamVjCiB7CiAgICAgaWYgKF9saXN0ZW5lcikgewogICAgICAgICBXaW5k
b3c6Okxpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0gX2h0bWwKLSAgICAgICAgICAgID8gX3dpbi0+
anNIVE1MRXZlbnRMaXN0ZW5lcnMgOiBfd2luLT5qc0V2ZW50TGlzdGVuZXJzOworICAgICAgICAg
ICAgPyBfd2luLT5qc0hUTUxFdmVudExpc3RlbmVycygpIDogX3dpbi0+anNFdmVudExpc3RlbmVy
cygpOwogICAgICAgICBsaXN0ZW5lcnMuc2V0KF9saXN0ZW5lciwgdGhpcyk7CiAgICAgfQogI2lm
bmRlZiBOREVCVUcKQEAgLTI0MCw3ICsyNDAsNyBAQCBKU0V2ZW50TGlzdGVuZXI6On5KU0V2ZW50
TGlzdGVuZXIoKQogewogICAgIGlmIChsaXN0ZW5lciAmJiB3aW4pIHsKICAgICAgICAgV2luZG93
OjpMaXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IGlzSFRNTEV2ZW50TGlzdGVuZXIoKQotICAgICAg
ICAgICAgPyB3aW4tPmpzSFRNTEV2ZW50TGlzdGVuZXJzIDogd2luLT5qc0V2ZW50TGlzdGVuZXJz
OworICAgICAgICAgICAgPyB3aW4tPmpzSFRNTEV2ZW50TGlzdGVuZXJzKCkgOiB3aW4tPmpzRXZl
bnRMaXN0ZW5lcnMoKTsKICAgICAgICAgbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CiAgICAg
fQogI2lmbmRlZiBOREVCVUcKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIEpTTGF6eUV2ZW50TGlz
dGVuZXI6OnBhcnNlQ29kZSgpIGNvCiAKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgV2lu
ZG93OjpMaXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IGlzSFRNTEV2ZW50TGlzdGVuZXIoKQotICAg
ICAgICAgICAgPyB3aW5kb3dPYmooKS0+anNIVE1MRXZlbnRMaXN0ZW5lcnMgOiB3aW5kb3dPYmoo
KS0+anNFdmVudExpc3RlbmVyczsKKyAgICAgICAgICAgID8gd2luZG93T2JqKCktPmpzSFRNTEV2
ZW50TGlzdGVuZXJzKCkgOiB3aW5kb3dPYmooKS0+anNFdmVudExpc3RlbmVycygpOwogICAgICAg
ICBsaXN0ZW5lcnMuc2V0KGxpc3RlbmVyLCBjb25zdF9jYXN0PEpTTGF6eUV2ZW50TGlzdGVuZXIq
Pih0aGlzKSk7CiAgICAgfQogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2luZG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc193aW5kb3cuY3BwCShy
ZXZpc2lvbiAyMDkxNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dpbmRvdy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDQ1IEBAIHN0YXRpYyBpbnQgdGltZXJOZXN0aW5nTGV2
ZWwgPSAwOwogY29uc3QgaW50IGNNYXhUaW1lck5lc3RpbmdMZXZlbCA9IDU7CiBjb25zdCBkb3Vi
bGUgY01pbmltdW1UaW1lckludGVydmFsID0gMC4wMTA7CiAKK3N0cnVjdCBXaW5kb3dQcml2YXRl
IHsKKyAgICBXaW5kb3dQcml2YXRlKCkgCisgICAgICAgIDogc2NyZWVuKDApCisgICAgICAgICwg
aGlzdG9yeSgwKQorICAgICAgICAsIGZyYW1lcygwKQorICAgICAgICAsIGxvYygwKQorICAgICAg
ICAsIG1fc2VsZWN0aW9uKDApCisgICAgICAgICwgbV9sb2NhdGlvbmJhcigwKQorICAgICAgICAs
IG1fbWVudWJhcigwKQorICAgICAgICAsIG1fcGVyc29uYWxiYXIoMCkKKyAgICAgICAgLCBtX3Nj
cm9sbGJhcnMoMCkKKyAgICAgICAgLCBtX3N0YXR1c2JhcigwKQorICAgICAgICAsIG1fdG9vbGJh
cigwKQorICAgICAgICAsIG1fZXZ0KDApCisgICAgICAgICwgbV9yZXR1cm5WYWx1ZVNsb3QoMCkK
KyAgICB7CisgICAgfQorCisgICAgV2luZG93OjpMaXN0ZW5lcnNNYXAganNFdmVudExpc3RlbmVy
czsKKyAgICBXaW5kb3c6Okxpc3RlbmVyc01hcCBqc0hUTUxFdmVudExpc3RlbmVyczsKKyAgICBX
aW5kb3c6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwIGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
czsKKyAgICBXaW5kb3c6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwIGpzVW5wcm90ZWN0ZWRIVE1M
RXZlbnRMaXN0ZW5lcnM7CisgICAgbXV0YWJsZSBTY3JlZW4qIHNjcmVlbjsKKyAgICBtdXRhYmxl
IEhpc3RvcnkqIGhpc3Rvcnk7CisgICAgbXV0YWJsZSBGcmFtZUFycmF5KiBmcmFtZXM7CisgICAg
bXV0YWJsZSBMb2NhdGlvbiogbG9jOworICAgIG11dGFibGUgU2VsZWN0aW9uKiBtX3NlbGVjdGlv
bjsKKyAgICBtdXRhYmxlIEJhckluZm8qIG1fbG9jYXRpb25iYXI7CisgICAgbXV0YWJsZSBCYXJJ
bmZvKiBtX21lbnViYXI7CisgICAgbXV0YWJsZSBCYXJJbmZvKiBtX3BlcnNvbmFsYmFyOworICAg
IG11dGFibGUgQmFySW5mbyogbV9zY3JvbGxiYXJzOworICAgIG11dGFibGUgQmFySW5mbyogbV9z
dGF0dXNiYXI7CisgICAgbXV0YWJsZSBCYXJJbmZvKiBtX3Rvb2xiYXI7CisgICAgV2ViQ29yZTo6
RXZlbnQgKm1fZXZ0OworICAgIEpTVmFsdWUgKiptX3JldHVyblZhbHVlU2xvdDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8aW50LCBET01XaW5kb3dUaW1lcio+IFRpbWVvdXRzTWFwOworICAgIFRpbWVv
dXRzTWFwIG1fdGltZW91dHM7Cit9OworCiBjbGFzcyBET01XaW5kb3dUaW1lciA6IHB1YmxpYyBU
aW1lckJhc2UgewogcHVibGljOgogICAgIERPTVdpbmRvd1RpbWVyKGludCB0aW1lb3V0SWQsIGlu
dCBuZXN0aW5nTGV2ZWwsIFdpbmRvdyogbywgU2NoZWR1bGVkQWN0aW9uKiBhKQpAQCAtMzMxLDE5
ICszNzAsNyBAQCBLSlNfSU1QTEVNRU5UX1BST1RPVFlQRV9GVU5DVElPTihXaW5kb3dGCiAKIFdp
bmRvdzo6V2luZG93KERPTVdpbmRvdyogd2luZG93KQogICA6IG1fZnJhbWUod2luZG93LT5mcmFt
ZSgpKQotICAsIHNjcmVlbigwKQotICAsIGhpc3RvcnkoMCkKLSAgLCBmcmFtZXMoMCkKLSAgLCBs
b2MoMCkKLSAgLCBtX3NlbGVjdGlvbigwKQotICAsIG1fbG9jYXRpb25iYXIoMCkKLSAgLCBtX21l
bnViYXIoMCkKLSAgLCBtX3BlcnNvbmFsYmFyKDApCi0gICwgbV9zY3JvbGxiYXJzKDApCi0gICwg
bV9zdGF0dXNiYXIoMCkKLSAgLCBtX3Rvb2xiYXIoMCkKLSAgLCBtX2V2dCgwKQotICAsIG1fcmV0
dXJuVmFsdWVTbG90KDApCisgICwgZChuZXcgV2luZG93UHJpdmF0ZSkKIHsKIH0KIApAQCAtMzUz
LDIxICszODAsMjEgQEAgV2luZG93Ojp+V2luZG93KCkKIAogICAgIC8vIENsZWFyIGFueSBiYWNr
cG9pbnRlcnMgdG8gdGhlIHdpbmRvdwogCi0gICAgTGlzdGVuZXJzTWFwOjppdGVyYXRvciBpMiA9
IGpzRXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsKLSAgICBMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGUy
ID0ganNFdmVudExpc3RlbmVycy5lbmQoKTsKKyAgICBMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGky
ID0gZC0+anNFdmVudExpc3RlbmVycy5iZWdpbigpOworICAgIExpc3RlbmVyc01hcDo6aXRlcmF0
b3IgZTIgPSBkLT5qc0V2ZW50TGlzdGVuZXJzLmVuZCgpOwogICAgIGZvciAoOyBpMiAhPSBlMjsg
KytpMikKICAgICAgICAgaTItPnNlY29uZC0+Y2xlYXJXaW5kb3dPYmooKTsKLSAgICBpMiA9IGpz
SFRNTEV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7Ci0gICAgZTIgPSBqc0hUTUxFdmVudExpc3RlbmVy
cy5lbmQoKTsKKyAgICBpMiA9IGQtPmpzSFRNTEV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7CisgICAg
ZTIgPSBkLT5qc0hUTUxFdmVudExpc3RlbmVycy5lbmQoKTsKICAgICBmb3IgKDsgaTIgIT0gZTI7
ICsraTIpCiAgICAgICAgIGkyLT5zZWNvbmQtPmNsZWFyV2luZG93T2JqKCk7CiAKLSAgICBVbnBy
b3RlY3RlZExpc3RlbmVyc01hcDo6aXRlcmF0b3IgaTEgPSBqc1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcnMuYmVnaW4oKTsKLSAgICBVbnByb3RlY3RlZExpc3RlbmVyc01hcDo6aXRlcmF0b3IgZTEg
PSBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnMuZW5kKCk7CisgICAgVW5wcm90ZWN0ZWRMaXN0
ZW5lcnNNYXA6Oml0ZXJhdG9yIGkxID0gZC0+anNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzLmJl
Z2luKCk7CisgICAgVW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGUxID0gZC0+anNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzLmVuZCgpOwogICAgIGZvciAoOyBpMSAhPSBlMTsgKytp
MSkKICAgICAgICAgaTEtPnNlY29uZC0+Y2xlYXJXaW5kb3dPYmooKTsKLSAgICBpMSA9IGpzVW5w
cm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsKLSAgICBlMSA9IGpzVW5wcm90ZWN0
ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuZW5kKCk7CisgICAgaTEgPSBkLT5qc1VucHJvdGVjdGVkSFRN
TEV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7CisgICAgZTEgPSBkLT5qc1VucHJvdGVjdGVkSFRNTEV2
ZW50TGlzdGVuZXJzLmVuZCgpOwogICAgIGZvciAoOyBpMSAhPSBlMTsgKytpMSkKICAgICAgICAg
aTEtPnNlY29uZC0+Y2xlYXJXaW5kb3dPYmooKTsKIH0KQEAgLTQwOCwxNiArNDM1LDE2IEBAIEpT
VmFsdWUgKldpbmRvdzo6cmV0cmlldmUoRnJhbWUgKnApCiAKIExvY2F0aW9uICpXaW5kb3c6Omxv
Y2F0aW9uKCkgY29uc3QKIHsKLSAgaWYgKCFsb2MpCi0gICAgbG9jID0gbmV3IExvY2F0aW9uKG1f
ZnJhbWUpOwotICByZXR1cm4gbG9jOworICBpZiAoIWQtPmxvYykKKyAgICBkLT5sb2MgPSBuZXcg
TG9jYXRpb24obV9mcmFtZSk7CisgIHJldHVybiBkLT5sb2M7CiB9CiAKIFNlbGVjdGlvbiAqV2lu
ZG93OjpzZWxlY3Rpb24oKSBjb25zdAogewotICBpZiAoIW1fc2VsZWN0aW9uKQotICAgIG1fc2Vs
ZWN0aW9uID0gbmV3IFNlbGVjdGlvbihtX2ZyYW1lKTsKLSAgcmV0dXJuIG1fc2VsZWN0aW9uOwor
ICBpZiAoIWQtPm1fc2VsZWN0aW9uKQorICAgIGQtPm1fc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlv
bihtX2ZyYW1lKTsKKyAgcmV0dXJuIGQtPm1fc2VsZWN0aW9uOwogfQogCiBib29sIFdpbmRvdzo6
ZmluZChjb25zdCBTdHJpbmcmIHN0cmluZywgYm9vbCBjYXNlU2Vuc2l0aXZlLCBib29sIGJhY2t3
YXJkcywgYm9vbCB3cmFwLCBib29sIHdob2xlV29yZCwgYm9vbCBzZWFyY2hJbkZyYW1lcywgYm9v
bCBzaG93RGlhbG9nKSBjb25zdApAQCAtNDI4LDcyICs0NTUsNzIgQEAgYm9vbCBXaW5kb3c6OmZp
bmQoY29uc3QgU3RyaW5nJiBzdHJpbmcsIAogCiBCYXJJbmZvICpXaW5kb3c6OmxvY2F0aW9uYmFy
KEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKIHsKLSAgaWYgKCFtX2xvY2F0aW9uYmFyKQotICAgIG1f
bG9jYXRpb25iYXIgPSBuZXcgQmFySW5mbyhleGVjLCBtX2ZyYW1lLCBCYXJJbmZvOjpMb2NhdGlv
bmJhcik7Ci0gIHJldHVybiBtX2xvY2F0aW9uYmFyOworICBpZiAoIWQtPm1fbG9jYXRpb25iYXIp
CisgICAgZC0+bV9sb2NhdGlvbmJhciA9IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhcklu
Zm86OkxvY2F0aW9uYmFyKTsKKyAgcmV0dXJuIGQtPm1fbG9jYXRpb25iYXI7CiB9CiAKIEJhcklu
Zm8gKldpbmRvdzo6bWVudWJhcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0CiB7Ci0gIGlmICghbV9t
ZW51YmFyKQotICAgIG1fbWVudWJhciA9IG5ldyBCYXJJbmZvKGV4ZWMsIG1fZnJhbWUsIEJhcklu
Zm86Ok1lbnViYXIpOwotICByZXR1cm4gbV9tZW51YmFyOworICBpZiAoIWQtPm1fbWVudWJhcikK
KyAgICBkLT5tX21lbnViYXIgPSBuZXcgQmFySW5mbyhleGVjLCBtX2ZyYW1lLCBCYXJJbmZvOjpN
ZW51YmFyKTsKKyAgcmV0dXJuIGQtPm1fbWVudWJhcjsKIH0KIAogQmFySW5mbyAqV2luZG93Ojpw
ZXJzb25hbGJhcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0CiB7Ci0gIGlmICghbV9wZXJzb25hbGJh
cikKLSAgICBtX3BlcnNvbmFsYmFyID0gbmV3IEJhckluZm8oZXhlYywgbV9mcmFtZSwgQmFySW5m
bzo6UGVyc29uYWxiYXIpOwotICByZXR1cm4gbV9wZXJzb25hbGJhcjsKKyAgaWYgKCFkLT5tX3Bl
cnNvbmFsYmFyKQorICAgIGQtPm1fcGVyc29uYWxiYXIgPSBuZXcgQmFySW5mbyhleGVjLCBtX2Zy
YW1lLCBCYXJJbmZvOjpQZXJzb25hbGJhcik7CisgIHJldHVybiBkLT5tX3BlcnNvbmFsYmFyOwog
fQogCiBCYXJJbmZvICpXaW5kb3c6OnN0YXR1c2JhcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0CiB7
Ci0gIGlmICghbV9zdGF0dXNiYXIpCi0gICAgbV9zdGF0dXNiYXIgPSBuZXcgQmFySW5mbyhleGVj
LCBtX2ZyYW1lLCBCYXJJbmZvOjpTdGF0dXNiYXIpOwotICByZXR1cm4gbV9zdGF0dXNiYXI7Cisg
IGlmICghZC0+bV9zdGF0dXNiYXIpCisgICAgZC0+bV9zdGF0dXNiYXIgPSBuZXcgQmFySW5mbyhl
eGVjLCBtX2ZyYW1lLCBCYXJJbmZvOjpTdGF0dXNiYXIpOworICByZXR1cm4gZC0+bV9zdGF0dXNi
YXI7CiB9CiAKIEJhckluZm8gKldpbmRvdzo6dG9vbGJhcihFeGVjU3RhdGUgKmV4ZWMpIGNvbnN0
CiB7Ci0gIGlmICghbV90b29sYmFyKQotICAgIG1fdG9vbGJhciA9IG5ldyBCYXJJbmZvKGV4ZWMs
IG1fZnJhbWUsIEJhckluZm86OlRvb2xiYXIpOwotICByZXR1cm4gbV90b29sYmFyOworICBpZiAo
IWQtPm1fdG9vbGJhcikKKyAgICBkLT5tX3Rvb2xiYXIgPSBuZXcgQmFySW5mbyhleGVjLCBtX2Zy
YW1lLCBCYXJJbmZvOjpUb29sYmFyKTsKKyAgcmV0dXJuIGQtPm1fdG9vbGJhcjsKIH0KIAogQmFy
SW5mbyAqV2luZG93OjpzY3JvbGxiYXJzKEV4ZWNTdGF0ZSAqZXhlYykgY29uc3QKIHsKLSAgaWYg
KCFtX3Njcm9sbGJhcnMpCi0gICAgbV9zY3JvbGxiYXJzID0gbmV3IEJhckluZm8oZXhlYywgbV9m
cmFtZSwgQmFySW5mbzo6U2Nyb2xsYmFycyk7Ci0gIHJldHVybiBtX3Njcm9sbGJhcnM7CisgIGlm
ICghZC0+bV9zY3JvbGxiYXJzKQorICAgIGQtPm1fc2Nyb2xsYmFycyA9IG5ldyBCYXJJbmZvKGV4
ZWMsIG1fZnJhbWUsIEJhckluZm86OlNjcm9sbGJhcnMpOworICByZXR1cm4gZC0+bV9zY3JvbGxi
YXJzOwogfQogCiAvLyByZWZlcmVuY2Ugb3VyIHNwZWNpYWwgb2JqZWN0cyBkdXJpbmcgZ2FyYmFn
ZSBjb2xsZWN0aW9uCiB2b2lkIFdpbmRvdzo6bWFyaygpCiB7CiAgIEpTT2JqZWN0OjptYXJrKCk7
Ci0gIGlmIChzY3JlZW4gJiYgIXNjcmVlbi0+bWFya2VkKCkpCi0gICAgc2NyZWVuLT5tYXJrKCk7
Ci0gIGlmIChoaXN0b3J5ICYmICFoaXN0b3J5LT5tYXJrZWQoKSkKLSAgICBoaXN0b3J5LT5tYXJr
KCk7Ci0gIGlmIChmcmFtZXMgJiYgIWZyYW1lcy0+bWFya2VkKCkpCi0gICAgZnJhbWVzLT5tYXJr
KCk7Ci0gIGlmIChsb2MgJiYgIWxvYy0+bWFya2VkKCkpCi0gICAgbG9jLT5tYXJrKCk7Ci0gIGlm
IChtX3NlbGVjdGlvbiAmJiAhbV9zZWxlY3Rpb24tPm1hcmtlZCgpKQotICAgIG1fc2VsZWN0aW9u
LT5tYXJrKCk7Ci0gIGlmIChtX2xvY2F0aW9uYmFyICYmICFtX2xvY2F0aW9uYmFyLT5tYXJrZWQo
KSkKLSAgICBtX2xvY2F0aW9uYmFyLT5tYXJrKCk7Ci0gIGlmIChtX21lbnViYXIgJiYgIW1fbWVu
dWJhci0+bWFya2VkKCkpCi0gICAgbV9tZW51YmFyLT5tYXJrKCk7Ci0gIGlmIChtX3BlcnNvbmFs
YmFyICYmICFtX3BlcnNvbmFsYmFyLT5tYXJrZWQoKSkKLSAgICBtX3BlcnNvbmFsYmFyLT5tYXJr
KCk7Ci0gIGlmIChtX3Njcm9sbGJhcnMgJiYgIW1fc2Nyb2xsYmFycy0+bWFya2VkKCkpCi0gICAg
bV9zY3JvbGxiYXJzLT5tYXJrKCk7Ci0gIGlmIChtX3N0YXR1c2JhciAmJiAhbV9zdGF0dXNiYXIt
Pm1hcmtlZCgpKQotICAgIG1fc3RhdHVzYmFyLT5tYXJrKCk7Ci0gIGlmIChtX3Rvb2xiYXIgJiYg
IW1fdG9vbGJhci0+bWFya2VkKCkpCi0gICAgbV90b29sYmFyLT5tYXJrKCk7CisgIGlmIChkLT5z
Y3JlZW4gJiYgIWQtPnNjcmVlbi0+bWFya2VkKCkpCisgICAgZC0+c2NyZWVuLT5tYXJrKCk7Cisg
IGlmIChkLT5oaXN0b3J5ICYmICFkLT5oaXN0b3J5LT5tYXJrZWQoKSkKKyAgICBkLT5oaXN0b3J5
LT5tYXJrKCk7CisgIGlmIChkLT5mcmFtZXMgJiYgIWQtPmZyYW1lcy0+bWFya2VkKCkpCisgICAg
ZC0+ZnJhbWVzLT5tYXJrKCk7CisgIGlmIChkLT5sb2MgJiYgIWQtPmxvYy0+bWFya2VkKCkpCisg
ICAgZC0+bG9jLT5tYXJrKCk7CisgIGlmIChkLT5tX3NlbGVjdGlvbiAmJiAhZC0+bV9zZWxlY3Rp
b24tPm1hcmtlZCgpKQorICAgIGQtPm1fc2VsZWN0aW9uLT5tYXJrKCk7CisgIGlmIChkLT5tX2xv
Y2F0aW9uYmFyICYmICFkLT5tX2xvY2F0aW9uYmFyLT5tYXJrZWQoKSkKKyAgICBkLT5tX2xvY2F0
aW9uYmFyLT5tYXJrKCk7CisgIGlmIChkLT5tX21lbnViYXIgJiYgIWQtPm1fbWVudWJhci0+bWFy
a2VkKCkpCisgICAgZC0+bV9tZW51YmFyLT5tYXJrKCk7CisgIGlmIChkLT5tX3BlcnNvbmFsYmFy
ICYmICFkLT5tX3BlcnNvbmFsYmFyLT5tYXJrZWQoKSkKKyAgICBkLT5tX3BlcnNvbmFsYmFyLT5t
YXJrKCk7CisgIGlmIChkLT5tX3Njcm9sbGJhcnMgJiYgIWQtPm1fc2Nyb2xsYmFycy0+bWFya2Vk
KCkpCisgICAgZC0+bV9zY3JvbGxiYXJzLT5tYXJrKCk7CisgIGlmIChkLT5tX3N0YXR1c2JhciAm
JiAhZC0+bV9zdGF0dXNiYXItPm1hcmtlZCgpKQorICAgIGQtPm1fc3RhdHVzYmFyLT5tYXJrKCk7
CisgIGlmIChkLT5tX3Rvb2xiYXIgJiYgIWQtPm1fdG9vbGJhci0+bWFya2VkKCkpCisgICAgZC0+
bV90b29sYmFyLT5tYXJrKCk7CiB9CiAKIFVTdHJpbmcgV2luZG93Ojp0b1N0cmluZyhFeGVjU3Rh
dGUgKikgY29uc3QKQEAgLTcxMiwxNyArNzM5LDE3IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0VmFs
dWVQcm9wZXJ0eShFeGVjU3QKICAgIGNhc2UgU3RhdHVzOgogICAgICAgcmV0dXJuIGpzU3RyaW5n
KFVTdHJpbmcobV9mcmFtZS0+anNTdGF0dXNCYXJUZXh0KCkpKTsKICAgICBjYXNlIEZyYW1lczoK
LSAgICAgIGlmICghZnJhbWVzKQotICAgICAgICBmcmFtZXMgPSBuZXcgRnJhbWVBcnJheShleGVj
LCBtX2ZyYW1lKTsKLSAgICAgIHJldHVybiBmcmFtZXM7CisgICAgICBpZiAoIWQtPmZyYW1lcykK
KyAgICAgICAgZC0+ZnJhbWVzID0gbmV3IEZyYW1lQXJyYXkoZXhlYywgbV9mcmFtZSk7CisgICAg
ICByZXR1cm4gZC0+ZnJhbWVzOwogICAgIGNhc2UgSGlzdG9yeV86Ci0gICAgICBpZiAoIWhpc3Rv
cnkpCi0gICAgICAgIGhpc3RvcnkgPSBuZXcgSGlzdG9yeShleGVjLCBtX2ZyYW1lKTsKLSAgICAg
IHJldHVybiBoaXN0b3J5OworICAgICAgaWYgKCFkLT5oaXN0b3J5KQorICAgICAgICBkLT5oaXN0
b3J5ID0gbmV3IEhpc3RvcnkoZXhlYywgbV9mcmFtZSk7CisgICAgICByZXR1cm4gZC0+aGlzdG9y
eTsKICAgICBjYXNlIEV2ZW50XzoKLSAgICAgIGlmICghbV9ldnQpCisgICAgICBpZiAoIWQtPm1f
ZXZ0KQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIG1fZXZ0KTsKKyAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGQtPm1fZXZ0KTsKICAgICBjYXNl
IElubmVySGVpZ2h0OgogICAgICAgaWYgKCFtX2ZyYW1lLT52aWV3KCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwpAQCAtODAzLDkgKzgzMCw5IEBAIEpTVmFsdWUgKldpbmRvdzo6Z2V0
VmFsdWVQcm9wZXJ0eShFeGVjU3QKICAgICBjYXNlIFRvcDoKICAgICAgIHJldHVybiByZXRyaWV2
ZShtX2ZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpKTsKICAgICBjYXNlIFNjcmVlbl86Ci0gICAg
ICBpZiAoIXNjcmVlbikKLSAgICAgICAgc2NyZWVuID0gbmV3IFNjcmVlbihleGVjLCBtX2ZyYW1l
KTsKLSAgICAgIHJldHVybiBzY3JlZW47CisgICAgICBpZiAoIWQtPnNjcmVlbikKKyAgICAgICAg
ZC0+c2NyZWVuID0gbmV3IFNjcmVlbihleGVjLCBtX2ZyYW1lKTsKKyAgICAgIHJldHVybiBkLT5z
Y3JlZW47CiAgICAgY2FzZSBJbWFnZToKICAgICAgIC8vIEZJWE1FOiB0aGlzIHByb3BlcnR5IChh
bmQgdGhlIGZldyBiZWxvdykgcHJvYmFibHkgc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvYmplY3Qg
ZXZlcnkKICAgICAgIC8vIHRpbWUKQEAgLTEzMTgsNyArMTM0NSw3IEBAIEpTRXZlbnRMaXN0ZW5l
ciogV2luZG93OjpmaW5kSlNFdmVudExpc3QKICAgICBpZiAoIXZhbC0+aXNPYmplY3QoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHN0YXRpY19jYXN0PEpTT2Jq
ZWN0Kj4odmFsKTsKLSAgICBMaXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IGh0bWwgPyBqc0hUTUxF
dmVudExpc3RlbmVycyA6IGpzRXZlbnRMaXN0ZW5lcnM7CisgICAgTGlzdGVuZXJzTWFwJiBsaXN0
ZW5lcnMgPSBodG1sID8gZC0+anNIVE1MRXZlbnRMaXN0ZW5lcnMgOiBkLT5qc0V2ZW50TGlzdGVu
ZXJzOwogICAgIHJldHVybiBsaXN0ZW5lcnMuZ2V0KG9iamVjdCk7CiB9CiAKQEAgLTEzNDEsNyAr
MTM2OCw3IEBAIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBXaW5kb3c6OmZpbmQKICAgICBp
ZiAoIXZhbC0+aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4odmFsKTsKLSAgICBVbnByb3RlY3RlZExpc3Rl
bmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5l
cnMgOiBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7CisgICAgVW5wcm90ZWN0ZWRMaXN0ZW5l
cnNNYXAmIGxpc3RlbmVycyA9IGh0bWwgPyBkLT5qc1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVu
ZXJzIDogZC0+anNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzOwogICAgIHJldHVybiBsaXN0ZW5l
cnMuZ2V0KG9iamVjdCk7CiB9CiAKQEAgLTEzNjEsMjYgKzEzODgsMjYgQEAgSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIgKldpbmRvdzo6ZmluZAogCiB2b2lkIFdpbmRvdzo6Y2xlYXJIZWxwZXJP
YmplY3RQcm9wZXJ0aWVzKCkKIHsKLSAgc2NyZWVuID0gMDsKLSAgaGlzdG9yeSA9IDA7Ci0gIGZy
YW1lcyA9IDA7Ci0gIGxvYyA9IDA7Ci0gIG1fc2VsZWN0aW9uID0gMDsKLSAgbV9sb2NhdGlvbmJh
ciA9IDA7Ci0gIG1fbWVudWJhciA9IDA7Ci0gIG1fcGVyc29uYWxiYXIgPSAwOwotICBtX3Njcm9s
bGJhcnMgPSAwOwotICBtX3N0YXR1c2JhciA9IDA7Ci0gIG1fdG9vbGJhciA9IDA7Ci0gIG1fZXZ0
ID0gMDsKKyAgZC0+c2NyZWVuID0gMDsKKyAgZC0+aGlzdG9yeSA9IDA7CisgIGQtPmZyYW1lcyA9
IDA7CisgIGQtPmxvYyA9IDA7CisgIGQtPm1fc2VsZWN0aW9uID0gMDsKKyAgZC0+bV9sb2NhdGlv
bmJhciA9IDA7CisgIGQtPm1fbWVudWJhciA9IDA7CisgIGQtPm1fcGVyc29uYWxiYXIgPSAwOwor
ICBkLT5tX3Njcm9sbGJhcnMgPSAwOworICBkLT5tX3N0YXR1c2JhciA9IDA7CisgIGQtPm1fdG9v
bGJhciA9IDA7CisgIGQtPm1fZXZ0ID0gMDsKIH0KIAogdm9pZCBXaW5kb3c6OmNsZWFyKCkKIHsK
ICAgSlNMb2NrIGxvY2s7CiAKLSAgaWYgKG1fcmV0dXJuVmFsdWVTbG90ICYmICEqbV9yZXR1cm5W
YWx1ZVNsb3QpCi0gICAgKm1fcmV0dXJuVmFsdWVTbG90ID0gZ2V0RGlyZWN0KCJyZXR1cm5WYWx1
ZSIpOworICBpZiAoZC0+bV9yZXR1cm5WYWx1ZVNsb3QgJiYgISpkLT5tX3JldHVyblZhbHVlU2xv
dCkKKyAgICAqZC0+bV9yZXR1cm5WYWx1ZVNsb3QgPSBnZXREaXJlY3QoInJldHVyblZhbHVlIik7
CiAKICAgY2xlYXJBbGxUaW1lb3V0cygpOwogICBjbGVhclByb3BlcnRpZXMoKTsKQEAgLTEzOTgs
NyArMTQyNSw3IEBAIHZvaWQgV2luZG93OjpjbGVhcigpCiAKIHZvaWQgV2luZG93OjpzZXRDdXJy
ZW50RXZlbnQoRXZlbnQgKmV2dCkKIHsKLSAgbV9ldnQgPSBldnQ7CisgIGQtPm1fZXZ0ID0gZXZ0
OwogfQogCiBzdGF0aWMgdm9pZCBzZXRXaW5kb3dGZWF0dXJlKGNvbnN0IFN0cmluZyYga2V5U3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHZhbHVlU3RyaW5nLCBXaW5kb3dGZWF0dXJlcyYgd2luZG93RmVh
dHVyZXMpCkBAIC0xODU5LDYgKzE4ODYsMTEgQEAgdm9pZCBXaW5kb3c6OnVwZGF0ZUxheW91dCgp
IGNvbnN0CiAgICAgZG9jaW1wbC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiB9CiAKK3ZvaWQgV2luZG93OjpzZXRSZXR1cm5WYWx1ZVNsb3QoSlNWYWx1ZSAqKnNsb3Qp
Cit7IAorICAgIGQtPm1fcmV0dXJuVmFsdWVTbG90ID0gc2xvdDsgCit9CisKIC8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8gU2NoZWR1bGVkQWN0aW9uIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiB2
b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZShXaW5kb3cqIHdpbmRvdykKQEAgLTE5MTIsOCAr
MTk0NCw4IEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlKFdpbmRvdyogd2kKIAogdm9p
ZCBXaW5kb3c6OmNsZWFyQWxsVGltZW91dHMoKQogewotICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3Rp
bWVvdXRzKTsKLSAgICBtX3RpbWVvdXRzLmNsZWFyKCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKGQt
Pm1fdGltZW91dHMpOworICAgIGQtPm1fdGltZW91dHMuY2xlYXIoKTsKIH0KIAogaW50IFdpbmRv
dzo6aW5zdGFsbFRpbWVvdXQoU2NoZWR1bGVkQWN0aW9uKiBhLCBpbnQgdCwgYm9vbCBzaW5nbGVT
aG90KQpAQCAtMTkyMSw4ICsxOTUzLDggQEAgaW50IFdpbmRvdzo6aW5zdGFsbFRpbWVvdXQoU2No
ZWR1bGVkQWN0aQogICAgIGludCB0aW1lb3V0SWQgPSArK2xhc3RVc2VkVGltZW91dElkOwogICAg
IGludCBuZXN0TGV2ZWwgPSB0aW1lck5lc3RpbmdMZXZlbCArIDE7CiAgICAgRE9NV2luZG93VGlt
ZXIqIHRpbWVyID0gbmV3IERPTVdpbmRvd1RpbWVyKHRpbWVvdXRJZCwgbmVzdExldmVsLCB0aGlz
LCBhKTsKLSAgICBBU1NFUlQoIW1fdGltZW91dHMuZ2V0KHRpbWVvdXRJZCkpOwotICAgIG1fdGlt
ZW91dHMuc2V0KHRpbWVvdXRJZCwgdGltZXIpOworICAgIEFTU0VSVCghZC0+bV90aW1lb3V0cy5n
ZXQodGltZW91dElkKSk7CisgICAgZC0+bV90aW1lb3V0cy5zZXQodGltZW91dElkLCB0aW1lcik7
CiAgICAgLy8gVXNlIGEgbWluaW11bSBpbnRlcnZhbCBvZiAxMCBtcyB0byBtYXRjaCBvdGhlciBi
cm93c2VycywgYnV0IG9ubHkgb25jZSB3ZSd2ZQogICAgIC8vIG5lc3RlZCBlbm91Z2ggdG8gbm90
aWNlIHRoYXQgd2UncmUgcmVwZWF0aW5nLgogICAgIC8vIEZhc3RlciB0aW1lcnMgbWlnaHQgYmUg
ImJldHRlciIsIGJ1dCB0aGV5J3JlIGluY29tcGF0aWJsZS4KQEAgLTE5NDgsMTQgKzE5ODAsMTQg
QEAgaW50IFdpbmRvdzo6aW5zdGFsbFRpbWVvdXQoSlNWYWx1ZSogZnVuYwogCiBQYXVzZWRUaW1l
b3V0cyogV2luZG93OjpwYXVzZVRpbWVvdXRzKCkKIHsKLSAgICBzaXplX3QgY291bnQgPSBtX3Rp
bWVvdXRzLnNpemUoKTsKKyAgICBzaXplX3QgY291bnQgPSBkLT5tX3RpbWVvdXRzLnNpemUoKTsK
ICAgICBpZiAoY291bnQgPT0gMCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBQYXVzZWRUaW1l
b3V0KiB0ID0gbmV3IFBhdXNlZFRpbWVvdXQgW2NvdW50XTsKICAgICBQYXVzZWRUaW1lb3V0cyog
cmVzdWx0ID0gbmV3IFBhdXNlZFRpbWVvdXRzKHQsIGNvdW50KTsKIAotICAgIFRpbWVvdXRzTWFw
OjppdGVyYXRvciBpdCA9IG1fdGltZW91dHMuYmVnaW4oKTsKKyAgICBXaW5kb3dQcml2YXRlOjpU
aW1lb3V0c01hcDo6aXRlcmF0b3IgaXQgPSBkLT5tX3RpbWVvdXRzLmJlZ2luKCk7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgIT0gY291bnQ7ICsraSwgKytpdCkgewogICAgICAgICBpbnQgdGlt
ZW91dElkID0gaXQtPmZpcnN0OwogICAgICAgICBET01XaW5kb3dUaW1lciogdGltZXIgPSBpdC0+
c2Vjb25kOwpAQCAtMTk2NSwxMCArMTk5NywxMCBAQCBQYXVzZWRUaW1lb3V0cyogV2luZG93Ojpw
YXVzZVRpbWVvdXRzKCkKICAgICAgICAgdFtpXS5yZXBlYXRJbnRlcnZhbCA9IHRpbWVyLT5yZXBl
YXRJbnRlcnZhbCgpOwogICAgICAgICB0W2ldLmFjdGlvbiA9IHRpbWVyLT50YWtlQWN0aW9uKCk7
CiAgICAgfQotICAgIEFTU0VSVChpdCA9PSBtX3RpbWVvdXRzLmVuZCgpKTsKKyAgICBBU1NFUlQo
aXQgPT0gZC0+bV90aW1lb3V0cy5lbmQoKSk7CiAKLSAgICBkZWxldGVBbGxWYWx1ZXMobV90aW1l
b3V0cyk7Ci0gICAgbV90aW1lb3V0cy5jbGVhcigpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhkLT5t
X3RpbWVvdXRzKTsKKyAgICBkLT5tX3RpbWVvdXRzLmNsZWFyKCk7CiAKICAgICByZXR1cm4gcmVz
dWx0OwogfQpAQCAtMTk4Miw3ICsyMDE0LDcgQEAgdm9pZCBXaW5kb3c6OnJlc3VtZVRpbWVvdXRz
KFBhdXNlZFRpbWVvdQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpICE9IGNvdW50OyArK2kpIHsK
ICAgICAgICAgaW50IHRpbWVvdXRJZCA9IGFycmF5W2ldLnRpbWVvdXRJZDsKICAgICAgICAgRE9N
V2luZG93VGltZXIqIHRpbWVyID0gbmV3IERPTVdpbmRvd1RpbWVyKHRpbWVvdXRJZCwgYXJyYXlb
aV0ubmVzdGluZ0xldmVsLCB0aGlzLCBhcnJheVtpXS5hY3Rpb24pOwotICAgICAgICBtX3RpbWVv
dXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsKKyAgICAgICAgZC0+bV90aW1lb3V0cy5zZXQodGlt
ZW91dElkLCB0aW1lcik7CiAgICAgICAgIHRpbWVyLT5zdGFydChhcnJheVtpXS5uZXh0RmlyZUlu
dGVydmFsLCBhcnJheVtpXS5yZXBlYXRJbnRlcnZhbCk7CiAgICAgfQogICAgIGRlbGV0ZSBbXSBh
cnJheTsKQEAgLTE5OTAsMTEgKzIwMjIsMTEgQEAgdm9pZCBXaW5kb3c6OnJlc3VtZVRpbWVvdXRz
KFBhdXNlZFRpbWVvdQogCiB2b2lkIFdpbmRvdzo6Y2xlYXJUaW1lb3V0KGludCB0aW1lb3V0SWQs
IGJvb2wgZGVsQWN0aW9uKQogewotICAgIFRpbWVvdXRzTWFwOjppdGVyYXRvciBpdCA9IG1fdGlt
ZW91dHMuZmluZCh0aW1lb3V0SWQpOwotICAgIGlmIChpdCA9PSBtX3RpbWVvdXRzLmVuZCgpKQor
ICAgIFdpbmRvd1ByaXZhdGU6OlRpbWVvdXRzTWFwOjppdGVyYXRvciBpdCA9IGQtPm1fdGltZW91
dHMuZmluZCh0aW1lb3V0SWQpOworICAgIGlmIChpdCA9PSBkLT5tX3RpbWVvdXRzLmVuZCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gaXQtPnNlY29uZDsK
LSAgICBtX3RpbWVvdXRzLnJlbW92ZShpdCk7CisgICAgZC0+bV90aW1lb3V0cy5yZW1vdmUoaXQp
OwogICAgIGRlbGV0ZSB0aW1lcjsKIH0KIApAQCAtMjAwNSw3ICsyMDM3LDcgQEAgdm9pZCBXaW5k
b3c6OnRpbWVyRmlyZWQoRE9NV2luZG93VGltZXIqIAogICAgICAgICBpbnQgdGltZW91dElkID0g
dGltZXItPnRpbWVvdXRJZCgpOwogCiAgICAgICAgIHRpbWVyLT5hY3Rpb24oKS0+ZXhlY3V0ZSh0
aGlzKTsKLSAgICAgICAgaWYgKG1fdGltZW91dHMuY29udGFpbnModGltZW91dElkKSAmJiB0aW1l
ci0+cmVwZWF0SW50ZXJ2YWwoKSAmJiB0aW1lci0+cmVwZWF0SW50ZXJ2YWwoKSA8IGNNaW5pbXVt
VGltZXJJbnRlcnZhbCkgeworICAgICAgICBpZiAoZC0+bV90aW1lb3V0cy5jb250YWlucyh0aW1l
b3V0SWQpICYmIHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpICYmIHRpbWVyLT5yZXBlYXRJbnRlcnZh
bCgpIDwgY01pbmltdW1UaW1lckludGVydmFsKSB7CiAgICAgICAgICAgICB0aW1lci0+c2V0TmVz
dGluZ0xldmVsKHRpbWVyLT5uZXN0aW5nTGV2ZWwoKSArIDEpOwogICAgICAgICAgICAgaWYgKHRp
bWVyLT5uZXN0aW5nTGV2ZWwoKSA+PSBjTWF4VGltZXJOZXN0aW5nTGV2ZWwpCiAgICAgICAgICAg
ICAgICAgdGltZXItPmF1Z21lbnRSZXBlYXRJbnRlcnZhbChjTWluaW11bVRpbWVySW50ZXJ2YWwg
LSB0aW1lci0+cmVwZWF0SW50ZXJ2YWwoKSk7CkBAIC0yMDE1LDcgKzIwNDcsNyBAQCB2b2lkIFdp
bmRvdzo6dGltZXJGaXJlZChET01XaW5kb3dUaW1lciogCiAKICAgICAvLyBEZWxldGUgdGltZXIg
YmVmb3JlIGV4ZWN1dGluZyB0aGUgYWN0aW9uIGZvciBvbmUtc2hvdCB0aW1lcnMuCiAgICAgU2No
ZWR1bGVkQWN0aW9uKiBhY3Rpb24gPSB0aW1lci0+dGFrZUFjdGlvbigpOwotICAgIG1fdGltZW91
dHMucmVtb3ZlKHRpbWVyLT50aW1lb3V0SWQoKSk7CisgICAgZC0+bV90aW1lb3V0cy5yZW1vdmUo
dGltZXItPnRpbWVvdXRJZCgpKTsKICAgICBkZWxldGUgdGltZXI7CiAgICAgYWN0aW9uLT5leGVj
dXRlKHRoaXMpOwogICAgIApAQCAtMjAyNywyNiArMjA1OSw0NiBAQCB2b2lkIFdpbmRvdzo6ZGlz
Y29ubmVjdEZyYW1lKCkKIHsKICAgICBjbGVhckFsbFRpbWVvdXRzKCk7CiAgICAgbV9mcmFtZSA9
IDA7Ci0gICAgaWYgKGxvYykKLSAgICAgICAgbG9jLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV9z
ZWxlY3Rpb24pCi0gICAgICAgIG1fc2VsZWN0aW9uLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV9s
b2NhdGlvbmJhcikKLSAgICAgICAgbV9sb2NhdGlvbmJhci0+bV9mcmFtZSA9IDA7Ci0gICAgaWYg
KG1fbWVudWJhcikKLSAgICAgICAgbV9tZW51YmFyLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV9w
ZXJzb25hbGJhcikKLSAgICAgICAgbV9wZXJzb25hbGJhci0+bV9mcmFtZSA9IDA7Ci0gICAgaWYg
KG1fc3RhdHVzYmFyKQotICAgICAgICBtX3N0YXR1c2Jhci0+bV9mcmFtZSA9IDA7Ci0gICAgaWYg
KG1fdG9vbGJhcikKLSAgICAgICAgbV90b29sYmFyLT5tX2ZyYW1lID0gMDsKLSAgICBpZiAobV9z
Y3JvbGxiYXJzKQotICAgICAgICBtX3Njcm9sbGJhcnMtPm1fZnJhbWUgPSAwOwotICAgIGlmIChm
cmFtZXMpCi0gICAgICAgIGZyYW1lcy0+ZGlzY29ubmVjdEZyYW1lKCk7Ci0gICAgaWYgKGhpc3Rv
cnkpCi0gICAgICAgIGhpc3RvcnktPmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIGlmIChkLT5sb2Mp
CisgICAgICAgIGQtPmxvYy0+bV9mcmFtZSA9IDA7CisgICAgaWYgKGQtPm1fc2VsZWN0aW9uKQor
ICAgICAgICBkLT5tX3NlbGVjdGlvbi0+bV9mcmFtZSA9IDA7CisgICAgaWYgKGQtPm1fbG9jYXRp
b25iYXIpCisgICAgICAgIGQtPm1fbG9jYXRpb25iYXItPm1fZnJhbWUgPSAwOworICAgIGlmIChk
LT5tX21lbnViYXIpCisgICAgICAgIGQtPm1fbWVudWJhci0+bV9mcmFtZSA9IDA7CisgICAgaWYg
KGQtPm1fcGVyc29uYWxiYXIpCisgICAgICAgIGQtPm1fcGVyc29uYWxiYXItPm1fZnJhbWUgPSAw
OworICAgIGlmIChkLT5tX3N0YXR1c2JhcikKKyAgICAgICAgZC0+bV9zdGF0dXNiYXItPm1fZnJh
bWUgPSAwOworICAgIGlmIChkLT5tX3Rvb2xiYXIpCisgICAgICAgIGQtPm1fdG9vbGJhci0+bV9m
cmFtZSA9IDA7CisgICAgaWYgKGQtPm1fc2Nyb2xsYmFycykKKyAgICAgICAgZC0+bV9zY3JvbGxi
YXJzLT5tX2ZyYW1lID0gMDsKKyAgICBpZiAoZC0+ZnJhbWVzKQorICAgICAgICBkLT5mcmFtZXMt
PmRpc2Nvbm5lY3RGcmFtZSgpOworICAgIGlmIChkLT5oaXN0b3J5KQorICAgICAgICBkLT5oaXN0
b3J5LT5kaXNjb25uZWN0RnJhbWUoKTsKK30KKworV2luZG93OjpMaXN0ZW5lcnNNYXAmIFdpbmRv
dzo6anNFdmVudExpc3RlbmVycygpCit7CisgICAgcmV0dXJuIGQtPmpzRXZlbnRMaXN0ZW5lcnM7
Cit9CisKK1dpbmRvdzo6TGlzdGVuZXJzTWFwJiBXaW5kb3c6OmpzSFRNTEV2ZW50TGlzdGVuZXJz
KCkKK3sKKyAgICByZXR1cm4gZC0+anNIVE1MRXZlbnRMaXN0ZW5lcnM7Cit9CisKK1dpbmRvdzo6
VW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAmIFdpbmRvdzo6anNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXJzKCkKK3sKKyAgICByZXR1cm4gZC0+anNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzOworfQor
CitXaW5kb3c6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBXaW5kb3c6OmpzVW5wcm90ZWN0ZWRI
VE1MRXZlbnRMaXN0ZW5lcnMoKQoreworICAgIHJldHVybiBkLT5qc1VucHJvdGVjdGVkSFRNTEV2
ZW50TGlzdGVuZXJzOwogfQogCiBjb25zdCBDbGFzc0luZm8gRnJhbWVBcnJheTo6aW5mbyA9IHsg
IkZyYW1lQXJyYXkiLCAwLCAmRnJhbWVBcnJheVRhYmxlLCAwIH07CkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL2tqc193aW5kb3cuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L2tqc193aW5kb3cuaAkocmV2aXNpb24gMjA5MTQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c193aW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsOCBAQCBuYW1lc3BhY2UgS0pT
IHsKICAgICBXZWJDb3JlOjpGcmFtZSogbV9mcmFtZTsKICAgfTsKIAorICBjbGFzcyBXaW5kb3dQ
cml2YXRlOworCiAgIGNsYXNzIFdpbmRvdyA6IHB1YmxpYyBET01PYmplY3QgewogICAgIGZyaWVu
ZCBjbGFzcyBMb2NhdGlvbjsKICAgICBmcmllbmQgY2xhc3MgV2luZG93RnVuYzsKQEAgLTE1Niwx
NCArMTU4LDE2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIHZvaWQgc2V0Q3VycmVudEV2ZW50KFdl
YkNvcmU6OkV2ZW50Kik7CiAKICAgICAvLyBTZXQgYSBwbGFjZSB0byBwdXQgYSBkaWFsb2cgcmV0
dXJuIHZhbHVlIHdoZW4gdGhlIHdpbmRvdyBpcyBjbGVhcmVkLgotICAgIHZvaWQgc2V0UmV0dXJu
VmFsdWVTbG90KEpTVmFsdWUgKipzbG90KSB7IG1fcmV0dXJuVmFsdWVTbG90ID0gc2xvdDsgfQor
ICAgIHZvaWQgc2V0UmV0dXJuVmFsdWVTbG90KEpTVmFsdWUgKipzbG90KTsKIAogICAgIHR5cGVk
ZWYgSGFzaE1hcDxKU09iamVjdCosIEpTRXZlbnRMaXN0ZW5lcio+IExpc3RlbmVyc01hcDsKICAg
ICB0eXBlZGVmIEhhc2hNYXA8SlNPYmplY3QqLCBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+
IFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwOwotICAgIExpc3RlbmVyc01hcCBqc0V2ZW50TGlzdGVu
ZXJzOwotICAgIExpc3RlbmVyc01hcCBqc0hUTUxFdmVudExpc3RlbmVyczsKLSAgICBVbnByb3Rl
Y3RlZExpc3RlbmVyc01hcCBqc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7Ci0gICAgVW5wcm90
ZWN0ZWRMaXN0ZW5lcnNNYXAganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVyczsKKyAgICAK
KyAgICBMaXN0ZW5lcnNNYXAmIGpzRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBMaXN0ZW5lcnNNYXAm
IGpzSFRNTEV2ZW50TGlzdGVuZXJzKCk7CisgICAgVW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAmIGpz
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycygpOworICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFw
JiBqc1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVuZXJzKCk7CisgICAgCiAgICAgdmlydHVhbCBj
b25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9CiAgICAg
c3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogICAgIGVudW0geyBBVG9CLCBCVG9BLCBDbG9z
ZWQsIENyeXB0bywgRGVmYXVsdFN0YXR1cywgU3RhdHVzLCBET01FeGNlcHRpb24sIEZyYW1lcywg
SGlzdG9yeV8sIEV2ZW50XywgSW5uZXJIZWlnaHQsCkBAIC0xOTgsMjEgKzIwMiw3IEBAIG5hbWVz
cGFjZSBLSlMgewogICAgIGludCBpbnN0YWxsVGltZW91dChTY2hlZHVsZWRBY3Rpb24qLCBpbnQg
aW50ZXJ2YWwsIGJvb2wgc2luZ2xlU2hvdCk7CiAKICAgICBXZWJDb3JlOjpGcmFtZSogbV9mcmFt
ZTsKLSAgICBtdXRhYmxlIFNjcmVlbiogc2NyZWVuOwotICAgIG11dGFibGUgSGlzdG9yeSogaGlz
dG9yeTsKLSAgICBtdXRhYmxlIEZyYW1lQXJyYXkqIGZyYW1lczsKLSAgICBtdXRhYmxlIExvY2F0
aW9uKiBsb2M7Ci0gICAgbXV0YWJsZSBTZWxlY3Rpb24qIG1fc2VsZWN0aW9uOwotICAgIG11dGFi
bGUgQmFySW5mbyogbV9sb2NhdGlvbmJhcjsKLSAgICBtdXRhYmxlIEJhckluZm8qIG1fbWVudWJh
cjsKLSAgICBtdXRhYmxlIEJhckluZm8qIG1fcGVyc29uYWxiYXI7Ci0gICAgbXV0YWJsZSBCYXJJ
bmZvKiBtX3Njcm9sbGJhcnM7Ci0gICAgbXV0YWJsZSBCYXJJbmZvKiBtX3N0YXR1c2JhcjsKLSAg
ICBtdXRhYmxlIEJhckluZm8qIG1fdG9vbGJhcjsKLSAgICBXZWJDb3JlOjpFdmVudCAqbV9ldnQ7
Ci0gICAgSlNWYWx1ZSAqKm1fcmV0dXJuVmFsdWVTbG90OwotICAgIHR5cGVkZWYgSGFzaE1hcDxp
bnQsIERPTVdpbmRvd1RpbWVyKj4gVGltZW91dHNNYXA7Ci0gICAgVGltZW91dHNNYXAgbV90aW1l
b3V0czsKKyAgICBPd25QdHI8V2luZG93UHJpdmF0ZT4gZDsKICAgfTsKIAogICAvKioK
</data>
<flag name="review"
          id="5693"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>