<?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>142392</bug_id>
          
          <creation_ts>2015-03-06 05:14:03 -0800</creation_ts>
          <short_desc>Move dispatch_data use behind NetworkCache::Data abstraction</short_desc>
          <delta_ts>2015-03-06 09:31:59 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1074901</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-06 05:14:03 -0800</bug_when>
    <thetext>Less platform dependent code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074903</commentid>
    <comment_count>1</comment_count>
      <attachid>248059</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-06 05:37:33 -0800</bug_when>
    <thetext>Created attachment 248059
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074904</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 05:40:08 -0800</bug_when>
    <thetext>Attachment 248059 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:66:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074908</commentid>
    <comment_count>3</comment_count>
      <attachid>248060</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-06 06:15:18 -0800</bug_when>
    <thetext>Created attachment 248060
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074909</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-06 06:17:48 -0800</bug_when>
    <thetext>Attachment 248060 did not pass style-queue:


ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:113:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:67:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 2 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074936</commentid>
    <comment_count>5</comment_count>
      <attachid>248060</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-03-06 08:23:45 -0800</bug_when>
    <thetext>Comment on attachment 248060
patch

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

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheData.h:113
&gt; +    void apply(std::function&lt;bool (const uint8_t*, size_t)&gt;&amp;&amp;) const;

I think the function can be const&amp; here.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheDataCocoa.mm:70
&gt; +    if (!m_size)
&gt; +        return;

It&apos;s a little weird that calling apply on an empty Data results in nothing happening.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheStorageCocoa.mm:264
&gt; +    Vector&lt;uint8_t, 4096&gt; filler(dataOffset - headerData.size(), 0);

I&apos;d use an std::array here instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074967</commentid>
    <comment_count>6</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-03-06 09:31:59 -0800</bug_when>
    <thetext>https://trac.webkit.org/r181160</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248059</attachid>
            <date>2015-03-06 05:37:33 -0800</date>
            <delta_ts>2015-03-06 06:15:18 -0800</delta_ts>
            <desc>patch</desc>
            <filename>disk-cache-data.patch</filename>
            <type>text/plain</type>
            <size>12534</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTE1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAzLTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGRpc3BhdGNoX2RhdGEg
dXNlIGJlaGluZCBOZXR3b3JrQ2FjaGU6OkRhdGEgYWJzdHJhY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjM5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRpc3Bh
dGNoUHRyOjpEaXNwYXRjaFB0cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFwcGx5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpzdWJyYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uY2F0ZW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6Om1hcEZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
Omhhc2hEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVFbnRyeU1l
dGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVFbnRyeUhlYWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlRW50cnkpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmVuY29kZUVudHJ5TWV0YURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmVuY29kZUVudHJ5SGVhZGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFwRmlsZSk6IERlbGV0ZWQuCisKIDIwMTUt
MDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
Z3VhcmRlZCBHVEstc3BlY2lmaWMgbWVtYmVyIGFuZCBtZXRob2QgdXNhZ2UgaW4gRHJhd2luZ0Fy
ZWFJbXBsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCShyZXZpc2lvbiAxODExNDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fcHRyKG51bGxwdHIpCiAg
ICAgewogICAgIH0KLSAgICBEaXNwYXRjaFB0cihUIHB0cikKKyAgICBleHBsaWNpdCBEaXNwYXRj
aFB0cihUIHB0cikKICAgICAgICAgOiBtX3B0cihwdHIpCiAgICAgewogICAgICAgICBpZiAobV9w
dHIpCkBAIC0xMDgsNiArMTA4LDEwIEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgaXNNYXAoKSBjb25zdCB7IHJldHVybiBtX2lz
TWFwOyB9CiAKKyAgICBEYXRhIHN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCkgY29uc3Q7
CisKKyAgICB2b2lkIGFwcGx5KHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiYpIGNvbnN0OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZGlzcGF0Y2hfZGF0
YV90IGRpc3BhdGNoRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hEYXRhLmdldCgpOyB9
CiAjZW5kaWYKQEAgLTEyMCw2ICsxMjQsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc01hcCB7
IGZhbHNlIH07CiB9OwogCitEYXRhIGNvbmNhdGVuYXRlKGNvbnN0IERhdGEmLCBjb25zdCBEYXRh
Jik7CitEYXRhIG1hcEZpbGUoaW50IGZkLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOworCiB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGFDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHJldmlzaW9uIDE4MTE0MCkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNDAsMTMgKzQwLDEwIEBAIERhdGE6OkRhdGEoY29uc3QgdWlu
dDhfdCogZGF0YSwgc2l6ZV90IHMKIH0KIAogRGF0YTo6RGF0YShEaXNwYXRjaFB0cjxkaXNwYXRj
aF9kYXRhX3Q+IGRpc3BhdGNoRGF0YSwgQmFja2luZyBiYWNraW5nKQorICAgIDogbV9kaXNwYXRj
aERhdGEoZGlzcGF0Y2hEYXRhKQorICAgICwgbV9zaXplKG1fZGlzcGF0Y2hEYXRhID8gZGlzcGF0
Y2hfZGF0YV9nZXRfc2l6ZShtX2Rpc3BhdGNoRGF0YS5nZXQoKSkgOiAwKQorICAgICwgbV9pc01h
cChtX3NpemUgJiYgYmFja2luZyA9PSBCYWNraW5nOjpNYXApCiB7Ci0gICAgaWYgKCFkaXNwYXRj
aERhdGEpCi0gICAgICAgIHJldHVybjsKLSAgICBjb25zdCB2b2lkKiBkYXRhOwotICAgIG1fZGlz
cGF0Y2hEYXRhID0gYWRvcHREaXNwYXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9tYXAoZGlzcGF0
Y2hEYXRhLmdldCgpLCAmZGF0YSwgJm1fc2l6ZSkpOwotICAgIG1fZGF0YSA9IHN0YXRpY19jYXN0
PGNvbnN0IHVpbnQ4X3QqPihkYXRhKTsKLSAgICBtX2lzTWFwID0gbV9zaXplICYmIGJhY2tpbmcg
PT0gQmFja2luZzo6TWFwOwogfQogCiBjb25zdCB1aW50OF90KiBEYXRhOjpkYXRhKCkgY29uc3QK
QEAgLTY2LDYgKzYzLDQwIEBAIGJvb2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4g
IW1fZGlzcGF0Y2hEYXRhOwogfQogCit2b2lkIERhdGE6OmFwcGx5KHN0ZDo6ZnVuY3Rpb248Ym9v
bCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+JiYgYXBwbGllcikgY29uc3QKK3sKKyAgICBpZiAo
IW1fc2l6ZSkKKyAgICAgICAgcmV0dXJuOworICAgIGRpc3BhdGNoX2RhdGFfYXBwbHkobV9kaXNw
YXRjaERhdGEuZ2V0KCksIFsmYXBwbGllcl0oZGlzcGF0Y2hfZGF0YV90LCBzaXplX3QsIGNvbnN0
IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgICAgIHJldHVybiBhcHBsaWVyKHN0YXRp
Y19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CisgICAgfSk7Cit9CisKK0RhdGEg
RGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0Cit7CisgICAg
cmV0dXJuIHsgYWRvcHREaXNwYXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9zdWJyYW5nZShkaXNw
YXRjaERhdGEoKSwgb2Zmc2V0LCBzaXplKSkgfTsKK30KKworRGF0YSBjb25jYXRlbmF0ZShjb25z
dCBEYXRhJiBhLCBjb25zdCBEYXRhJiBiKQoreworICAgIGlmIChhLmlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gYjsKKyAgICBpZiAoYi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGE7CisgICAg
cmV0dXJuIHsgYWRvcHREaXNwYXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9jb25jYXQoYS5kaXNw
YXRjaERhdGEoKSwgYi5kaXNwYXRjaERhdGEoKSkpIH07Cit9CisKK0RhdGEgbWFwRmlsZShpbnQg
ZmQsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKQoreworICAgIHZvaWQqIG1hcCA9IG1tYXAo
bnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmQsIG9mZnNldCk7CisgICAg
aWYgKG1hcCA9PSBNQVBfRkFJTEVEKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gYm9k
eU1hcCA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0YV9jcmVhdGUobWFwLCBzaXplLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbWFwLCBzaXplXSB7CisgICAgICAgIG11bm1hcChtYXAs
IHNpemUpOworICAgIH0pKTsKKyAgICByZXR1cm4geyBib2R5TWFwLCBEYXRhOjpCYWNraW5nOjpN
YXAgfTsKK30KKwogfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5t
bQkocmV2aXNpb24gMTgxMTQwKQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDcg
Kzg4LDggQEAgdm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCghZGlkQ2FsbENvbXBsZXRp
b25IYW5kbGVyKTsKLSAgICAgICAgRGF0YSBkYXRhKGZpbGVEYXRhKTsKKyAgICAgICAgRGlzcGF0
Y2hQdHI8ZGlzcGF0Y2hfZGF0YV90PiBmaWxlRGF0YVB0cihmaWxlRGF0YSk7CisgICAgICAgIERh
dGEgZGF0YShmaWxlRGF0YVB0cik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGVy
cm9yKTsKICAgICAgICAgZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyID0gdHJ1ZTsKICAgICB9KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0
b3JhZ2VDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlQ29jb2EubW0JKHJldmlzaW9uIDE4MTE0MCkKKysr
IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2VD
b2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTI2LDEzICsxMjYsMTEgQEAgc3RhdGljIFJlZjxJ
T0NoYW5uZWw+IG9wZW5GaWxlRm9yS2V5KGNvbgogICAgIHJldHVybiBJT0NoYW5uZWw6Om9wZW4o
ZmlsZVBhdGgsIHR5cGUpOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaGFzaERhdGEoZGlzcGF0Y2hf
ZGF0YV90IGRhdGEpCitzdGF0aWMgdW5zaWduZWQgaGFzaERhdGEoY29uc3QgRGF0YSYgZGF0YSkK
IHsKLSAgICBpZiAoIWRhdGEgfHwgIWRpc3BhdGNoX2RhdGFfZ2V0X3NpemUoZGF0YSkpCi0gICAg
ICAgIHJldHVybiAwOwogICAgIFN0cmluZ0hhc2hlciBoYXNoZXI7Ci0gICAgZGlzcGF0Y2hfZGF0
YV9hcHBseShkYXRhLCBbJmhhc2hlcl0oZGlzcGF0Y2hfZGF0YV90LCBzaXplX3QsIGNvbnN0IHZv
aWQqIGRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgICAgIGhhc2hlci5hZGRDaGFyYWN0ZXJzKHN0
YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRhKSwgc2l6ZSk7CisgICAgZGF0YS5hcHBseShb
Jmhhc2hlcl0oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICAgICAgaGFz
aGVyLmFkZENoYXJhY3RlcnMoZGF0YSwgc2l6ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0pOwogICAgIHJldHVybiBoYXNoZXIuaGFzaCgpOwpAQCAtMTU5LDggKzE1Nyw4IEBAIHN0cnVj
dCBFbnRyeU1ldGFEYXRhIHsKIHN0YXRpYyBib29sIGRlY29kZUVudHJ5TWV0YURhdGEoRW50cnlN
ZXRhRGF0YSYgbWV0YURhdGEsIGNvbnN0IERhdGEmIGZpbGVEYXRhKQogewogICAgIGJvb2wgc3Vj
Y2VzcyA9IGZhbHNlOwotICAgIGRpc3BhdGNoX2RhdGFfYXBwbHkoZmlsZURhdGEuZGlzcGF0Y2hE
YXRhKCksIFsmbWV0YURhdGEsICZzdWNjZXNzXShkaXNwYXRjaF9kYXRhX3QsIHNpemVfdCwgY29u
c3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICAgICAgRGVjb2RlciBkZWNvZGVyKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICBmaWxlRGF0
YS5hcHBseShbJm1ldGFEYXRhLCAmc3VjY2Vzc10oY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90
IHNpemUpIHsKKyAgICAgICAgRGVjb2RlciBkZWNvZGVyKGRhdGEsIHNpemUpOwogICAgICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRhLmNhY2hlU3RvcmFnZVZlcnNpb24pKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1ldGFEYXRh
LmtleSkpCkBAIC0xODUsMTcgKzE4Myw2IEBAIHN0YXRpYyBib29sIGRlY29kZUVudHJ5TWV0YURh
dGEoRW50cnlNZXQKICAgICByZXR1cm4gc3VjY2VzczsKIH0KIAotc3RhdGljIERpc3BhdGNoUHRy
PGRpc3BhdGNoX2RhdGFfdD4gbWFwRmlsZShpbnQgZmQsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBz
aXplKQotewotICAgIHZvaWQqIG1hcCA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9SRUFELCBN
QVBfUFJJVkFURSwgZmQsIG9mZnNldCk7Ci0gICAgaWYgKG1hcCA9PSBNQVBfRkFJTEVEKQotICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGJvZHlNYXAgPSBhZG9wdERpc3BhdGNoKGRp
c3BhdGNoX2RhdGFfY3JlYXRlKG1hcCwgc2l6ZSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W21hcCwgc2l6ZV0gewotICAgICAgICBtdW5tYXAobWFwLCBzaXplKTsKLSAgICB9KSk7Ci0gICAg
cmV0dXJuIGJvZHlNYXA7Ci19Ci0KIHN0YXRpYyBib29sIGRlY29kZUVudHJ5SGVhZGVyKGNvbnN0
IERhdGEmIGZpbGVEYXRhLCBFbnRyeU1ldGFEYXRhJiBtZXRhRGF0YSwgRGF0YSYgZGF0YSkKIHsK
ICAgICBpZiAoIWRlY29kZUVudHJ5TWV0YURhdGEobWV0YURhdGEsIGZpbGVEYXRhKSkKQEAgLTIw
NSw4ICsxOTIsOCBAQCBzdGF0aWMgYm9vbCBkZWNvZGVFbnRyeUhlYWRlcihjb25zdCBEYXRhCiAg
ICAgaWYgKG1ldGFEYXRhLmhlYWRlck9mZnNldCArIG1ldGFEYXRhLmhlYWRlclNpemUgPiBtZXRh
RGF0YS5ib2R5T2Zmc2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhdXRvIGhlYWRl
ckRhdGEgPSBhZG9wdERpc3BhdGNoKGRpc3BhdGNoX2RhdGFfY3JlYXRlX3N1YnJhbmdlKGZpbGVE
YXRhLmRpc3BhdGNoRGF0YSgpLCBtZXRhRGF0YS5oZWFkZXJPZmZzZXQsIG1ldGFEYXRhLmhlYWRl
clNpemUpKTsKLSAgICBpZiAobWV0YURhdGEuaGVhZGVyQ2hlY2tzdW0gIT0gaGFzaERhdGEoaGVh
ZGVyRGF0YS5nZXQoKSkpIHsKKyAgICBhdXRvIGhlYWRlckRhdGEgPSBmaWxlRGF0YS5zdWJyYW5n
ZShtZXRhRGF0YS5oZWFkZXJPZmZzZXQsIG1ldGFEYXRhLmhlYWRlclNpemUpOworICAgIGlmICht
ZXRhRGF0YS5oZWFkZXJDaGVja3N1bSAhPSBoYXNoRGF0YShoZWFkZXJEYXRhKSkgewogICAgICAg
ICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2VzcykgaGVhZGVyIGNoZWNr
c3VtIG1pc21hdGNoIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CkBAIC0yMjcsMjUg
KzIxNCwyNSBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OkVudHJ5PiBkCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byBib2R5RGF0YSA9IG1hcEZpbGUoZmQsIG1l
dGFEYXRhLmJvZHlPZmZzZXQsIG1ldGFEYXRhLmJvZHlTaXplKTsKLSAgICBpZiAoIWJvZHlEYXRh
KSB7CisgICAgaWYgKGJvZHlEYXRhLmlzTnVsbCgpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBtYXAgZmFpbGVkIik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIGlmIChtZXRhRGF0YS5ib2R5Q2hlY2tzdW0gIT0gaGFz
aERhdGEoYm9keURhdGEuZ2V0KCkpKSB7CisgICAgaWYgKG1ldGFEYXRhLmJvZHlDaGVja3N1bSAh
PSBoYXNoRGF0YShib2R5RGF0YSkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2Us
ICIoTmV0d29ya1Byb2Nlc3MpIGRhdGEgY2hlY2tzdW0gbWlzbWF0Y2giKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxTdG9yYWdl
OjpFbnRyeT4obmV3IFN0b3JhZ2U6OkVudHJ5IHsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1
ZTxTdG9yYWdlOjpFbnRyeT4oU3RvcmFnZTo6RW50cnkgewogICAgICAgICBtZXRhRGF0YS5rZXks
CiAgICAgICAgIG1ldGFEYXRhLnRpbWVTdGFtcCwKICAgICAgICAgaGVhZGVyRGF0YSwKLSAgICAg
ICAgeyBib2R5RGF0YSwgRGF0YTo6QmFja2luZzo6TWFwIH0KKyAgICAgICAgYm9keURhdGEKICAg
ICB9KTsKIH0KIAotc3RhdGljIERpc3BhdGNoUHRyPGRpc3BhdGNoX2RhdGFfdD4gZW5jb2RlRW50
cnlNZXRhRGF0YShjb25zdCBFbnRyeU1ldGFEYXRhJiBlbnRyeSkKK3N0YXRpYyBEYXRhIGVuY29k
ZUVudHJ5TWV0YURhdGEoY29uc3QgRW50cnlNZXRhRGF0YSYgZW50cnkpCiB7CiAgICAgRW5jb2Rl
ciBlbmNvZGVyOwogCkBAIC0yNTksMjggKzI0NiwyOCBAQCBzdGF0aWMgRGlzcGF0Y2hQdHI8ZGlz
cGF0Y2hfZGF0YV90PiBlbmNvCiAKICAgICBlbmNvZGVyLmVuY29kZUNoZWNrc3VtKCk7CiAKLSAg
ICByZXR1cm4gYWRvcHREaXNwYXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZShlbmNvZGVyLmJ1ZmZl
cigpLCBlbmNvZGVyLmJ1ZmZlclNpemUoKSwgbnVsbHB0ciwgRElTUEFUQ0hfREFUQV9ERVNUUlVD
VE9SX0RFRkFVTFQpKTsKKyAgICByZXR1cm4gRGF0YShlbmNvZGVyLmJ1ZmZlcigpLCBlbmNvZGVy
LmJ1ZmZlclNpemUoKSk7CiB9CiAKIHN0YXRpYyBEYXRhIGVuY29kZUVudHJ5SGVhZGVyKGNvbnN0
IFN0b3JhZ2U6OkVudHJ5JiBlbnRyeSkKIHsKICAgICBFbnRyeU1ldGFEYXRhIG1ldGFEYXRhKGVu
dHJ5LmtleSk7CiAgICAgbWV0YURhdGEudGltZVN0YW1wID0gZW50cnkudGltZVN0YW1wOwotICAg
IG1ldGFEYXRhLmhlYWRlckNoZWNrc3VtID0gaGFzaERhdGEoZW50cnkuaGVhZGVyLmRpc3BhdGNo
RGF0YSgpKTsKKyAgICBtZXRhRGF0YS5oZWFkZXJDaGVja3N1bSA9IGhhc2hEYXRhKGVudHJ5Lmhl
YWRlcik7CiAgICAgbWV0YURhdGEuaGVhZGVyU2l6ZSA9IGVudHJ5LmhlYWRlci5zaXplKCk7Ci0g
ICAgbWV0YURhdGEuYm9keUNoZWNrc3VtID0gaGFzaERhdGEoZW50cnkuYm9keS5kaXNwYXRjaERh
dGEoKSk7CisgICAgbWV0YURhdGEuYm9keUNoZWNrc3VtID0gaGFzaERhdGEoZW50cnkuYm9keSk7
CiAgICAgbWV0YURhdGEuYm9keVNpemUgPSBlbnRyeS5ib2R5LnNpemUoKTsKIAogICAgIGF1dG8g
ZW5jb2RlZE1ldGFEYXRhID0gZW5jb2RlRW50cnlNZXRhRGF0YShtZXRhRGF0YSk7Ci0gICAgYXV0
byBoZWFkZXJEYXRhID0gYWRvcHREaXNwYXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9jb25jYXQo
ZW5jb2RlZE1ldGFEYXRhLmdldCgpLCBlbnRyeS5oZWFkZXIuZGlzcGF0Y2hEYXRhKCkpKTsKKyAg
ICBhdXRvIGhlYWRlckRhdGEgPSBjb25jYXRlbmF0ZShlbmNvZGVkTWV0YURhdGEsIGVudHJ5Lmhl
YWRlcik7CiAgICAgaWYgKCFlbnRyeS5ib2R5LnNpemUoKSkKICAgICAgICAgcmV0dXJuIHsgaGVh
ZGVyRGF0YSB9OwogCi0gICAgc2l6ZV90IGhlYWRlclNpemUgPSBkaXNwYXRjaF9kYXRhX2dldF9z
aXplKGhlYWRlckRhdGEuZ2V0KCkpOwotICAgIHNpemVfdCBkYXRhT2Zmc2V0ID0gcm91bmRfcGFn
ZShoZWFkZXJTaXplKTsKLSAgICBWZWN0b3I8dWludDhfdCwgNDA5Nj4gZmlsbGVyKGRhdGFPZmZz
ZXQgLSBoZWFkZXJTaXplLCAwKTsKLSAgICBhdXRvIGFsaWdubWVudERhdGEgPSBhZG9wdERpc3Bh
dGNoKGRpc3BhdGNoX2RhdGFfY3JlYXRlKGZpbGxlci5kYXRhKCksIGZpbGxlci5zaXplKCksIG51
bGxwdHIsIERJU1BBVENIX0RBVEFfREVTVFJVQ1RPUl9ERUZBVUxUKSk7Ci0gICAgcmV0dXJuIHsg
YWRvcHREaXNwYXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9jb25jYXQoaGVhZGVyRGF0YS5nZXQo
KSwgYWxpZ25tZW50RGF0YS5nZXQoKSkpIH07CisgICAgc2l6ZV90IGRhdGFPZmZzZXQgPSByb3Vu
ZF9wYWdlKGhlYWRlckRhdGEuc2l6ZSgpKTsKKyAgICBWZWN0b3I8dWludDhfdCwgNDA5Nj4gZmls
bGVyKGRhdGFPZmZzZXQgLSBoZWFkZXJEYXRhLnNpemUoKSwgMCk7CisgICAgRGF0YSBhbGlnbm1l
bnREYXRhKGZpbGxlci5kYXRhKCksIGZpbGxlci5zaXplKCkpOworCisgICAgcmV0dXJuIGNvbmNh
dGVuYXRlKGhlYWRlckRhdGEsIGFsaWdubWVudERhdGEpOwogfQogCiB2b2lkIFN0b3JhZ2U6OnJl
bW92ZUVudHJ5KGNvbnN0IEtleSYga2V5KQpAQCAtNDg0LDE1ICs0NzEsMTMgQEAgdm9pZCBTdG9y
YWdlOjpkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlvbgogICAgIFN0cmluZ0NhcHR1cmUgY2FjaGVQ
YXRoQ2FwdHVyZShtX2RpcmVjdG9yeVBhdGgpOwogICAgIGJhY2tncm91bmRJT1F1ZXVlKCkuZGlz
cGF0Y2goW3RoaXMsICZ3cml0ZSwgY2FjaGVQYXRoQ2FwdHVyZV0gewogICAgICAgICBhdXRvIGVu
Y29kZWRIZWFkZXIgPSBlbmNvZGVFbnRyeUhlYWRlcih3cml0ZS5lbnRyeSk7Ci0gICAgICAgIGF1
dG8gaGVhZGVyQW5kQm9keURhdGEgPSBhZG9wdERpc3BhdGNoKGRpc3BhdGNoX2RhdGFfY3JlYXRl
X2NvbmNhdChlbmNvZGVkSGVhZGVyLmRpc3BhdGNoRGF0YSgpLCB3cml0ZS5lbnRyeS5ib2R5LmRp
c3BhdGNoRGF0YSgpKSk7Ci0KLSAgICAgICAgRGF0YSB3cml0ZURhdGEoaGVhZGVyQW5kQm9keURh
dGEpOworICAgICAgICBhdXRvIGhlYWRlckFuZEJvZHlEYXRhID0gY29uY2F0ZW5hdGUoZW5jb2Rl
ZEhlYWRlciwgd3JpdGUuZW50cnkuYm9keSk7CiAKICAgICAgICAgYXV0byBjaGFubmVsID0gb3Bl
bkZpbGVGb3JLZXkod3JpdGUuZW50cnkua2V5LCBJT0NoYW5uZWw6OlR5cGU6OkNyZWF0ZSwgY2Fj
aGVQYXRoQ2FwdHVyZS5zdHJpbmcoKSk7CiAgICAgICAgIGludCBmZCA9IGNoYW5uZWwtPmZpbGVE
ZXNjcmlwdG9yKCk7CiAgICAgICAgIHNpemVfdCBib2R5T2Zmc2V0ID0gZW5jb2RlZEhlYWRlci5z
aXplKCk7CiAKLSAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgd3JpdGVEYXRhLCBbdGhpcywgJndy
aXRlLCBib2R5T2Zmc2V0LCBmZF0oaW50IGVycm9yKSB7CisgICAgICAgIGNoYW5uZWwtPndyaXRl
KDAsIGhlYWRlckFuZEJvZHlEYXRhLCBbdGhpcywgJndyaXRlLCBib2R5T2Zmc2V0LCBmZF0oaW50
IGVycm9yKSB7CiAgICAgICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3Jr
UHJvY2Vzcykgd3JpdGUgY29tcGxldGUgZXJyb3I9JWQiLCBlcnJvcik7CiAgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKICAgICAgICAgICAgICAgICBpZiAobV9jb250ZW50c0ZpbHRlci5tYXlDb250
YWluKHdyaXRlLmVudHJ5LmtleS5zaG9ydEhhc2goKSkpCkBAIC01MDQsMTAgKzQ4OSw5IEBAIHZv
aWQgU3RvcmFnZTo6ZGlzcGF0Y2hGdWxsV3JpdGVPcGVyYXRpb24KICAgICAgICAgICAgIG1fYXBw
cm94aW1hdGVTaXplICs9IHRvdGFsU2l6ZTsKIAogICAgICAgICAgICAgYm9vbCBzaG91bGRNYXBC
b2R5ID0gIWVycm9yICYmIGJvZHlTaXplID49IHZtX3BhZ2Vfc2l6ZTsKLSAgICAgICAgICAgIGF1
dG8gYm9keU1hcCA9IHNob3VsZE1hcEJvZHkgPyBtYXBGaWxlKGZkLCBib2R5T2Zmc2V0LCBib2R5
U2l6ZSkgOiBudWxscHRyOworICAgICAgICAgICAgYXV0byBib2R5TWFwID0gc2hvdWxkTWFwQm9k
eSA/IG1hcEZpbGUoZmQsIGJvZHlPZmZzZXQsIGJvZHlTaXplKSA6IERhdGEoKTsKIAotICAgICAg
ICAgICAgRGF0YSBib2R5RGF0YShib2R5TWFwLCBEYXRhOjpCYWNraW5nOjpNYXApOwotICAgICAg
ICAgICAgd3JpdGUuY29tcGxldGlvbkhhbmRsZXIoIWVycm9yLCBib2R5RGF0YSk7CisgICAgICAg
ICAgICB3cml0ZS5jb21wbGV0aW9uSGFuZGxlcighZXJyb3IsIGJvZHlNYXApOwogCiAgICAgICAg
ICAgICBBU1NFUlQobV9hY3RpdmVXcml0ZU9wZXJhdGlvbnMuY29udGFpbnMoJndyaXRlKSk7CiAg
ICAgICAgICAgICBtX2FjdGl2ZVdyaXRlT3BlcmF0aW9ucy5yZW1vdmUoJndyaXRlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248060</attachid>
            <date>2015-03-06 06:15:18 -0800</date>
            <delta_ts>2015-03-06 08:23:45 -0800</delta_ts>
            <desc>patch</desc>
            <filename>disk-cache-data-2.patch</filename>
            <type>text/plain</type>
            <size>12974</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTE1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE1LTAzLTA2ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIGRpc3BhdGNoX2RhdGEg
dXNlIGJlaGluZCBOZXR3b3JrQ2FjaGU6OkRhdGEgYWJzdHJhY3Rpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjM5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlRGF0YS5oOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRpc3Bh
dGNoUHRyOjpEaXNwYXRjaFB0cik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRh
dGE6OkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmFwcGx5KToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpzdWJyYW5nZSk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6Y29uY2F0ZW5hdGUpOgorICAgICAgICAoV2ViS2l0OjpO
ZXR3b3JrQ2FjaGU6Om1hcEZpbGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbENvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2Fj
aGU6OklPQ2hhbm5lbDo6cmVhZCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlU3RvcmFnZUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6
Omhhc2hEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVFbnRyeU1l
dGFEYXRhKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVFbnRyeUhlYWRl
cik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZGVjb2RlRW50cnkpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmVuY29kZUVudHJ5TWV0YURhdGEpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmVuY29kZUVudHJ5SGVhZGVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpTdG9yYWdlOjpkaXNwYXRjaEZ1bGxXcml0ZU9wZXJhdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6bWFwRmlsZSk6IERlbGV0ZWQuCisKIDIwMTUt
MDMtMDYgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVu
Z3VhcmRlZCBHVEstc3BlY2lmaWMgbWVtYmVyIGFuZCBtZXRob2QgdXNhZ2UgaW4gRHJhd2luZ0Fy
ZWFJbXBsCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oCShyZXZpc2lvbiAxODExNDApCisrKyBTb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fcHRyKG51bGxwdHIpCiAg
ICAgewogICAgIH0KLSAgICBEaXNwYXRjaFB0cihUIHB0cikKKyAgICBleHBsaWNpdCBEaXNwYXRj
aFB0cihUIHB0cikKICAgICAgICAgOiBtX3B0cihwdHIpCiAgICAgewogICAgICAgICBpZiAobV9w
dHIpCkBAIC0xMDgsNiArMTA4LDEwIEBAIHB1YmxpYzoKICAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgaXNNYXAoKSBjb25zdCB7IHJldHVybiBtX2lz
TWFwOyB9CiAKKyAgICBEYXRhIHN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCkgY29uc3Q7
CisKKyAgICB2b2lkIGFwcGx5KHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiYpIGNvbnN0OworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZGlzcGF0Y2hfZGF0
YV90IGRpc3BhdGNoRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGF0Y2hEYXRhLmdldCgpOyB9
CiAjZW5kaWYKQEAgLTEyMCw2ICsxMjQsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc01hcCB7
IGZhbHNlIH07CiB9OwogCitEYXRhIGNvbmNhdGVuYXRlKGNvbnN0IERhdGEmLCBjb25zdCBEYXRh
Jik7CitEYXRhIG1hcEZpbGUoaW50IGZkLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QpOworCiB9CiB9
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZURhdGFDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhQ29jb2EubW0JKHJldmlzaW9uIDE4MTE0MCkKKysrIFNv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFDb2NvYS5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShORVRXT1JLX0NB
Q0hFKQogCiAjaW5jbHVkZSA8ZGlzcGF0Y2gvZGlzcGF0Y2guaD4KKyNpbmNsdWRlIDxzeXMvbW1h
bi5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIG5hbWVzcGFjZSBOZXR3b3JrQ2FjaGUgewpAQCAt
NDAsMTMgKzQxLDEwIEBAIERhdGE6OkRhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHMK
IH0KIAogRGF0YTo6RGF0YShEaXNwYXRjaFB0cjxkaXNwYXRjaF9kYXRhX3Q+IGRpc3BhdGNoRGF0
YSwgQmFja2luZyBiYWNraW5nKQorICAgIDogbV9kaXNwYXRjaERhdGEoZGlzcGF0Y2hEYXRhKQor
ICAgICwgbV9zaXplKG1fZGlzcGF0Y2hEYXRhID8gZGlzcGF0Y2hfZGF0YV9nZXRfc2l6ZShtX2Rp
c3BhdGNoRGF0YS5nZXQoKSkgOiAwKQorICAgICwgbV9pc01hcChtX3NpemUgJiYgYmFja2luZyA9
PSBCYWNraW5nOjpNYXApCiB7Ci0gICAgaWYgKCFkaXNwYXRjaERhdGEpCi0gICAgICAgIHJldHVy
bjsKLSAgICBjb25zdCB2b2lkKiBkYXRhOwotICAgIG1fZGlzcGF0Y2hEYXRhID0gYWRvcHREaXNw
YXRjaChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9tYXAoZGlzcGF0Y2hEYXRhLmdldCgpLCAmZGF0YSwg
Jm1fc2l6ZSkpOwotICAgIG1fZGF0YSA9IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihkYXRh
KTsKLSAgICBtX2lzTWFwID0gbV9zaXplICYmIGJhY2tpbmcgPT0gQmFja2luZzo6TWFwOwogfQog
CiBjb25zdCB1aW50OF90KiBEYXRhOjpkYXRhKCkgY29uc3QKQEAgLTY2LDYgKzY0LDQwIEBAIGJv
b2wgRGF0YTo6aXNOdWxsKCkgY29uc3QKICAgICByZXR1cm4gIW1fZGlzcGF0Y2hEYXRhOwogfQog
Cit2b2lkIERhdGE6OmFwcGx5KHN0ZDo6ZnVuY3Rpb248Ym9vbCAoY29uc3QgdWludDhfdCosIHNp
emVfdCk+JiYgYXBwbGllcikgY29uc3QKK3sKKyAgICBpZiAoIW1fc2l6ZSkKKyAgICAgICAgcmV0
dXJuOworICAgIGRpc3BhdGNoX2RhdGFfYXBwbHkobV9kaXNwYXRjaERhdGEuZ2V0KCksIFsmYXBw
bGllcl0oZGlzcGF0Y2hfZGF0YV90LCBzaXplX3QsIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBz
aXplKSB7CisgICAgICAgIHJldHVybiBhcHBsaWVyKHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3Qq
PihkYXRhKSwgc2l6ZSk7CisgICAgfSk7Cit9CisKK0RhdGEgRGF0YTo6c3VicmFuZ2Uoc2l6ZV90
IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHsgYWRvcHREaXNwYXRj
aChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9zdWJyYW5nZShkaXNwYXRjaERhdGEoKSwgb2Zmc2V0LCBz
aXplKSkgfTsKK30KKworRGF0YSBjb25jYXRlbmF0ZShjb25zdCBEYXRhJiBhLCBjb25zdCBEYXRh
JiBiKQoreworICAgIGlmIChhLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gYjsKKyAgICBpZiAo
Yi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIGE7CisgICAgcmV0dXJuIHsgYWRvcHREaXNwYXRj
aChkaXNwYXRjaF9kYXRhX2NyZWF0ZV9jb25jYXQoYS5kaXNwYXRjaERhdGEoKSwgYi5kaXNwYXRj
aERhdGEoKSkpIH07Cit9CisKK0RhdGEgbWFwRmlsZShpbnQgZmQsIHNpemVfdCBvZmZzZXQsIHNp
emVfdCBzaXplKQoreworICAgIHZvaWQqIG1hcCA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgUFJPVF9S
RUFELCBNQVBfUFJJVkFURSwgZmQsIG9mZnNldCk7CisgICAgaWYgKG1hcCA9PSBNQVBfRkFJTEVE
KQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gYm9keU1hcCA9IGFkb3B0RGlzcGF0Y2go
ZGlzcGF0Y2hfZGF0YV9jcmVhdGUobWFwLCBzaXplLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbbWFwLCBzaXplXSB7CisgICAgICAgIG11bm1hcChtYXAsIHNpemUpOworICAgIH0pKTsKKyAg
ICByZXR1cm4geyBib2R5TWFwLCBEYXRhOjpCYWNraW5nOjpNYXAgfTsKK30KKwogfQogfQogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0No
YW5uZWxDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxDb2NvYS5tbQkocmV2aXNpb24gMTgxMTQwKQor
KysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTg4LDcgKzg4LDggQEAgdm9pZCBJT0NoYW5u
ZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVCghZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAg
RGF0YSBkYXRhKGZpbGVEYXRhKTsKKyAgICAgICAgRGlzcGF0Y2hQdHI8ZGlzcGF0Y2hfZGF0YV90
PiBmaWxlRGF0YVB0cihmaWxlRGF0YSk7CisgICAgICAgIERhdGEgZGF0YShmaWxlRGF0YVB0cik7
CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEsIGVycm9yKTsKICAgICAgICAgZGlkQ2Fs
bENvbXBsZXRpb25IYW5kbGVyID0gdHJ1ZTsKICAgICB9KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2VDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlQ29jb2EubW0JKHJldmlzaW9uIDE4MTE0MCkKKysrIFNvdXJjZS9XZWJLaXQyL05ldHdv
cmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2VDb2NvYS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMzMsOSArMzMsNiBAQAogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUZpbGVTeXN0ZW1Qb3Np
eC5oIgogI2luY2x1ZGUgIk5ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oIgogI2luY2x1ZGUgPGRpc3Bh
dGNoL2Rpc3BhdGNoLmg+Ci0jaW5jbHVkZSA8bWFjaC92bV9wYXJhbS5oPgotI2luY2x1ZGUgPHN5
cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNpbmNsdWRlIDx3dGYvUmFuZG9tTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC0xMjYsMTMgKzEyMywxMSBAQCBzdGF0aWMgUmVmPElPQ2hhbm5lbD4gb3BlbkZp
bGVGb3JLZXkoY29uCiAgICAgcmV0dXJuIElPQ2hhbm5lbDo6b3BlbihmaWxlUGF0aCwgdHlwZSk7
CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBoYXNoRGF0YShkaXNwYXRjaF9kYXRhX3QgZGF0YSkKK3N0
YXRpYyB1bnNpZ25lZCBoYXNoRGF0YShjb25zdCBEYXRhJiBkYXRhKQogewotICAgIGlmICghZGF0
YSB8fCAhZGlzcGF0Y2hfZGF0YV9nZXRfc2l6ZShkYXRhKSkKLSAgICAgICAgcmV0dXJuIDA7CiAg
ICAgU3RyaW5nSGFzaGVyIGhhc2hlcjsKLSAgICBkaXNwYXRjaF9kYXRhX2FwcGx5KGRhdGEsIFsm
aGFzaGVyXShkaXNwYXRjaF9kYXRhX3QsIHNpemVfdCwgY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90
IHNpemUpIHsKLSAgICAgICAgaGFzaGVyLmFkZENoYXJhY3RlcnMoc3RhdGljX2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGRhdGEpLCBzaXplKTsKKyAgICBkYXRhLmFwcGx5KFsmaGFzaGVyXShjb25zdCB1
aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAgICBoYXNoZXIuYWRkQ2hhcmFjdGVy
cyhkYXRhLCBzaXplKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfSk7CiAgICAgcmV0dXJu
IGhhc2hlci5oYXNoKCk7CkBAIC0xNTksOCArMTU0LDggQEAgc3RydWN0IEVudHJ5TWV0YURhdGEg
ewogc3RhdGljIGJvb2wgZGVjb2RlRW50cnlNZXRhRGF0YShFbnRyeU1ldGFEYXRhJiBtZXRhRGF0
YSwgY29uc3QgRGF0YSYgZmlsZURhdGEpCiB7CiAgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7Ci0g
ICAgZGlzcGF0Y2hfZGF0YV9hcHBseShmaWxlRGF0YS5kaXNwYXRjaERhdGEoKSwgWyZtZXRhRGF0
YSwgJnN1Y2Nlc3NdKGRpc3BhdGNoX2RhdGFfdCwgc2l6ZV90LCBjb25zdCB2b2lkKiBkYXRhLCBz
aXplX3Qgc2l6ZSkgewotICAgICAgICBEZWNvZGVyIGRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSksIHNpemUpOworICAgIGZpbGVEYXRhLmFwcGx5KFsmbWV0YURh
dGEsICZzdWNjZXNzXShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgICAg
ICBEZWNvZGVyIGRlY29kZXIoZGF0YSwgc2l6ZSk7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobWV0YURhdGEuY2FjaGVTdG9yYWdlVmVyc2lvbikpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUobWV0YURhdGEua2V5KSkKQEAgLTE4NSwx
NyArMTgwLDYgQEAgc3RhdGljIGJvb2wgZGVjb2RlRW50cnlNZXRhRGF0YShFbnRyeU1ldAogICAg
IHJldHVybiBzdWNjZXNzOwogfQogCi1zdGF0aWMgRGlzcGF0Y2hQdHI8ZGlzcGF0Y2hfZGF0YV90
PiBtYXBGaWxlKGludCBmZCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCi17Ci0gICAgdm9p
ZCogbWFwID0gbW1hcChudWxscHRyLCBzaXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwg
b2Zmc2V0KTsKLSAgICBpZiAobWFwID09IE1BUF9GQUlMRUQpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIGF1dG8gYm9keU1hcCA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0YV9jcmVh
dGUobWFwLCBzaXplLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbbWFwLCBzaXplXSB7Ci0g
ICAgICAgIG11bm1hcChtYXAsIHNpemUpOwotICAgIH0pKTsKLSAgICByZXR1cm4gYm9keU1hcDsK
LX0KLQogc3RhdGljIGJvb2wgZGVjb2RlRW50cnlIZWFkZXIoY29uc3QgRGF0YSYgZmlsZURhdGEs
IEVudHJ5TWV0YURhdGEmIG1ldGFEYXRhLCBEYXRhJiBkYXRhKQogewogICAgIGlmICghZGVjb2Rl
RW50cnlNZXRhRGF0YShtZXRhRGF0YSwgZmlsZURhdGEpKQpAQCAtMjA1LDggKzE4OSw4IEBAIHN0
YXRpYyBib29sIGRlY29kZUVudHJ5SGVhZGVyKGNvbnN0IERhdGEKICAgICBpZiAobWV0YURhdGEu
aGVhZGVyT2Zmc2V0ICsgbWV0YURhdGEuaGVhZGVyU2l6ZSA+IG1ldGFEYXRhLmJvZHlPZmZzZXQp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gaGVhZGVyRGF0YSA9IGFkb3B0RGlz
cGF0Y2goZGlzcGF0Y2hfZGF0YV9jcmVhdGVfc3VicmFuZ2UoZmlsZURhdGEuZGlzcGF0Y2hEYXRh
KCksIG1ldGFEYXRhLmhlYWRlck9mZnNldCwgbWV0YURhdGEuaGVhZGVyU2l6ZSkpOwotICAgIGlm
IChtZXRhRGF0YS5oZWFkZXJDaGVja3N1bSAhPSBoYXNoRGF0YShoZWFkZXJEYXRhLmdldCgpKSkg
eworICAgIGF1dG8gaGVhZGVyRGF0YSA9IGZpbGVEYXRhLnN1YnJhbmdlKG1ldGFEYXRhLmhlYWRl
ck9mZnNldCwgbWV0YURhdGEuaGVhZGVyU2l6ZSk7CisgICAgaWYgKG1ldGFEYXRhLmhlYWRlckNo
ZWNrc3VtICE9IGhhc2hEYXRhKGhlYWRlckRhdGEpKSB7CiAgICAgICAgIExPRyhOZXR3b3JrQ2Fj
aGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSBoZWFkZXIgY2hlY2tzdW0gbWlzbWF0Y2giKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTIyNywyNSArMjExLDI1IEBAIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U3RvcmFnZTo6RW50cnk+IGQKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBhdXRvIGJvZHlEYXRhID0gbWFwRmlsZShmZCwgbWV0YURhdGEuYm9keU9mZnNl
dCwgbWV0YURhdGEuYm9keVNpemUpOwotICAgIGlmICghYm9keURhdGEpIHsKKyAgICBpZiAoYm9k
eURhdGEuaXNOdWxsKCkpIHsKICAgICAgICAgTE9HKE5ldHdvcmtDYWNoZVN0b3JhZ2UsICIoTmV0
d29ya1Byb2Nlc3MpIG1hcCBmYWlsZWQiKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgaWYgKG1ldGFEYXRhLmJvZHlDaGVja3N1bSAhPSBoYXNoRGF0YShib2R5RGF0YS5n
ZXQoKSkpIHsKKyAgICBpZiAobWV0YURhdGEuYm9keUNoZWNrc3VtICE9IGhhc2hEYXRhKGJvZHlE
YXRhKSkgewogICAgICAgICBMT0coTmV0d29ya0NhY2hlU3RvcmFnZSwgIihOZXR3b3JrUHJvY2Vz
cykgZGF0YSBjaGVja3N1bSBtaXNtYXRjaCIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKLSAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFN0b3JhZ2U6OkVudHJ5PihuZXcgU3Rv
cmFnZTo6RW50cnkgeworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFN0b3JhZ2U6OkVudHJ5
PihTdG9yYWdlOjpFbnRyeSB7CiAgICAgICAgIG1ldGFEYXRhLmtleSwKICAgICAgICAgbWV0YURh
dGEudGltZVN0YW1wLAogICAgICAgICBoZWFkZXJEYXRhLAotICAgICAgICB7IGJvZHlEYXRhLCBE
YXRhOjpCYWNraW5nOjpNYXAgfQorICAgICAgICBib2R5RGF0YQogICAgIH0pOwogfQogCi1zdGF0
aWMgRGlzcGF0Y2hQdHI8ZGlzcGF0Y2hfZGF0YV90PiBlbmNvZGVFbnRyeU1ldGFEYXRhKGNvbnN0
IEVudHJ5TWV0YURhdGEmIGVudHJ5KQorc3RhdGljIERhdGEgZW5jb2RlRW50cnlNZXRhRGF0YShj
b25zdCBFbnRyeU1ldGFEYXRhJiBlbnRyeSkKIHsKICAgICBFbmNvZGVyIGVuY29kZXI7CiAKQEAg
LTI1OSwyOCArMjQzLDI4IEBAIHN0YXRpYyBEaXNwYXRjaFB0cjxkaXNwYXRjaF9kYXRhX3Q+IGVu
Y28KIAogICAgIGVuY29kZXIuZW5jb2RlQ2hlY2tzdW0oKTsKIAotICAgIHJldHVybiBhZG9wdERp
c3BhdGNoKGRpc3BhdGNoX2RhdGFfY3JlYXRlKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVm
ZmVyU2l6ZSgpLCBudWxscHRyLCBESVNQQVRDSF9EQVRBX0RFU1RSVUNUT1JfREVGQVVMVCkpOwor
ICAgIHJldHVybiBEYXRhKGVuY29kZXIuYnVmZmVyKCksIGVuY29kZXIuYnVmZmVyU2l6ZSgpKTsK
IH0KIAogc3RhdGljIERhdGEgZW5jb2RlRW50cnlIZWFkZXIoY29uc3QgU3RvcmFnZTo6RW50cnkm
IGVudHJ5KQogewogICAgIEVudHJ5TWV0YURhdGEgbWV0YURhdGEoZW50cnkua2V5KTsKICAgICBt
ZXRhRGF0YS50aW1lU3RhbXAgPSBlbnRyeS50aW1lU3RhbXA7Ci0gICAgbWV0YURhdGEuaGVhZGVy
Q2hlY2tzdW0gPSBoYXNoRGF0YShlbnRyeS5oZWFkZXIuZGlzcGF0Y2hEYXRhKCkpOworICAgIG1l
dGFEYXRhLmhlYWRlckNoZWNrc3VtID0gaGFzaERhdGEoZW50cnkuaGVhZGVyKTsKICAgICBtZXRh
RGF0YS5oZWFkZXJTaXplID0gZW50cnkuaGVhZGVyLnNpemUoKTsKLSAgICBtZXRhRGF0YS5ib2R5
Q2hlY2tzdW0gPSBoYXNoRGF0YShlbnRyeS5ib2R5LmRpc3BhdGNoRGF0YSgpKTsKKyAgICBtZXRh
RGF0YS5ib2R5Q2hlY2tzdW0gPSBoYXNoRGF0YShlbnRyeS5ib2R5KTsKICAgICBtZXRhRGF0YS5i
b2R5U2l6ZSA9IGVudHJ5LmJvZHkuc2l6ZSgpOwogCiAgICAgYXV0byBlbmNvZGVkTWV0YURhdGEg
PSBlbmNvZGVFbnRyeU1ldGFEYXRhKG1ldGFEYXRhKTsKLSAgICBhdXRvIGhlYWRlckRhdGEgPSBh
ZG9wdERpc3BhdGNoKGRpc3BhdGNoX2RhdGFfY3JlYXRlX2NvbmNhdChlbmNvZGVkTWV0YURhdGEu
Z2V0KCksIGVudHJ5LmhlYWRlci5kaXNwYXRjaERhdGEoKSkpOworICAgIGF1dG8gaGVhZGVyRGF0
YSA9IGNvbmNhdGVuYXRlKGVuY29kZWRNZXRhRGF0YSwgZW50cnkuaGVhZGVyKTsKICAgICBpZiAo
IWVudHJ5LmJvZHkuc2l6ZSgpKQogICAgICAgICByZXR1cm4geyBoZWFkZXJEYXRhIH07CiAKLSAg
ICBzaXplX3QgaGVhZGVyU2l6ZSA9IGRpc3BhdGNoX2RhdGFfZ2V0X3NpemUoaGVhZGVyRGF0YS5n
ZXQoKSk7Ci0gICAgc2l6ZV90IGRhdGFPZmZzZXQgPSByb3VuZF9wYWdlKGhlYWRlclNpemUpOwot
ICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBmaWxsZXIoZGF0YU9mZnNldCAtIGhlYWRlclNpemUs
IDApOwotICAgIGF1dG8gYWxpZ25tZW50RGF0YSA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0
YV9jcmVhdGUoZmlsbGVyLmRhdGEoKSwgZmlsbGVyLnNpemUoKSwgbnVsbHB0ciwgRElTUEFUQ0hf
REFUQV9ERVNUUlVDVE9SX0RFRkFVTFQpKTsKLSAgICByZXR1cm4geyBhZG9wdERpc3BhdGNoKGRp
c3BhdGNoX2RhdGFfY3JlYXRlX2NvbmNhdChoZWFkZXJEYXRhLmdldCgpLCBhbGlnbm1lbnREYXRh
LmdldCgpKSkgfTsKKyAgICBzaXplX3QgZGF0YU9mZnNldCA9IHJvdW5kX3BhZ2UoaGVhZGVyRGF0
YS5zaXplKCkpOworICAgIFZlY3Rvcjx1aW50OF90LCA0MDk2PiBmaWxsZXIoZGF0YU9mZnNldCAt
IGhlYWRlckRhdGEuc2l6ZSgpLCAwKTsKKyAgICBEYXRhIGFsaWdubWVudERhdGEoZmlsbGVyLmRh
dGEoKSwgZmlsbGVyLnNpemUoKSk7CisKKyAgICByZXR1cm4gY29uY2F0ZW5hdGUoaGVhZGVyRGF0
YSwgYWxpZ25tZW50RGF0YSk7CiB9CiAKIHZvaWQgU3RvcmFnZTo6cmVtb3ZlRW50cnkoY29uc3Qg
S2V5JiBrZXkpCkBAIC00ODQsMTUgKzQ2OCwxMyBAQCB2b2lkIFN0b3JhZ2U6OmRpc3BhdGNoRnVs
bFdyaXRlT3BlcmF0aW9uCiAgICAgU3RyaW5nQ2FwdHVyZSBjYWNoZVBhdGhDYXB0dXJlKG1fZGly
ZWN0b3J5UGF0aCk7CiAgICAgYmFja2dyb3VuZElPUXVldWUoKS5kaXNwYXRjaChbdGhpcywgJndy
aXRlLCBjYWNoZVBhdGhDYXB0dXJlXSB7CiAgICAgICAgIGF1dG8gZW5jb2RlZEhlYWRlciA9IGVu
Y29kZUVudHJ5SGVhZGVyKHdyaXRlLmVudHJ5KTsKLSAgICAgICAgYXV0byBoZWFkZXJBbmRCb2R5
RGF0YSA9IGFkb3B0RGlzcGF0Y2goZGlzcGF0Y2hfZGF0YV9jcmVhdGVfY29uY2F0KGVuY29kZWRI
ZWFkZXIuZGlzcGF0Y2hEYXRhKCksIHdyaXRlLmVudHJ5LmJvZHkuZGlzcGF0Y2hEYXRhKCkpKTsK
LQotICAgICAgICBEYXRhIHdyaXRlRGF0YShoZWFkZXJBbmRCb2R5RGF0YSk7CisgICAgICAgIGF1
dG8gaGVhZGVyQW5kQm9keURhdGEgPSBjb25jYXRlbmF0ZShlbmNvZGVkSGVhZGVyLCB3cml0ZS5l
bnRyeS5ib2R5KTsKIAogICAgICAgICBhdXRvIGNoYW5uZWwgPSBvcGVuRmlsZUZvcktleSh3cml0
ZS5lbnRyeS5rZXksIElPQ2hhbm5lbDo6VHlwZTo6Q3JlYXRlLCBjYWNoZVBhdGhDYXB0dXJlLnN0
cmluZygpKTsKICAgICAgICAgaW50IGZkID0gY2hhbm5lbC0+ZmlsZURlc2NyaXB0b3IoKTsKICAg
ICAgICAgc2l6ZV90IGJvZHlPZmZzZXQgPSBlbmNvZGVkSGVhZGVyLnNpemUoKTsKIAotICAgICAg
ICBjaGFubmVsLT53cml0ZSgwLCB3cml0ZURhdGEsIFt0aGlzLCAmd3JpdGUsIGJvZHlPZmZzZXQs
IGZkXShpbnQgZXJyb3IpIHsKKyAgICAgICAgY2hhbm5lbC0+d3JpdGUoMCwgaGVhZGVyQW5kQm9k
eURhdGEsIFt0aGlzLCAmd3JpdGUsIGJvZHlPZmZzZXQsIGZkXShpbnQgZXJyb3IpIHsKICAgICAg
ICAgICAgIExPRyhOZXR3b3JrQ2FjaGVTdG9yYWdlLCAiKE5ldHdvcmtQcm9jZXNzKSB3cml0ZSBj
b21wbGV0ZSBlcnJvcj0lZCIsIGVycm9yKTsKICAgICAgICAgICAgIGlmIChlcnJvcikgewogICAg
ICAgICAgICAgICAgIGlmIChtX2NvbnRlbnRzRmlsdGVyLm1heUNvbnRhaW4od3JpdGUuZW50cnku
a2V5LnNob3J0SGFzaCgpKSkKQEAgLTUwNCwxMCArNDg2LDkgQEAgdm9pZCBTdG9yYWdlOjpkaXNw
YXRjaEZ1bGxXcml0ZU9wZXJhdGlvbgogICAgICAgICAgICAgbV9hcHByb3hpbWF0ZVNpemUgKz0g
dG90YWxTaXplOwogCiAgICAgICAgICAgICBib29sIHNob3VsZE1hcEJvZHkgPSAhZXJyb3IgJiYg
Ym9keVNpemUgPj0gdm1fcGFnZV9zaXplOwotICAgICAgICAgICAgYXV0byBib2R5TWFwID0gc2hv
dWxkTWFwQm9keSA/IG1hcEZpbGUoZmQsIGJvZHlPZmZzZXQsIGJvZHlTaXplKSA6IG51bGxwdHI7
CisgICAgICAgICAgICBhdXRvIGJvZHlNYXAgPSBzaG91bGRNYXBCb2R5ID8gbWFwRmlsZShmZCwg
Ym9keU9mZnNldCwgYm9keVNpemUpIDogRGF0YSgpOwogCi0gICAgICAgICAgICBEYXRhIGJvZHlE
YXRhKGJvZHlNYXAsIERhdGE6OkJhY2tpbmc6Ok1hcCk7Ci0gICAgICAgICAgICB3cml0ZS5jb21w
bGV0aW9uSGFuZGxlcighZXJyb3IsIGJvZHlEYXRhKTsKKyAgICAgICAgICAgIHdyaXRlLmNvbXBs
ZXRpb25IYW5kbGVyKCFlcnJvciwgYm9keU1hcCk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX2Fj
dGl2ZVdyaXRlT3BlcmF0aW9ucy5jb250YWlucygmd3JpdGUpKTsKICAgICAgICAgICAgIG1fYWN0
aXZlV3JpdGVPcGVyYXRpb25zLnJlbW92ZSgmd3JpdGUpOwo=
</data>
<flag name="review"
          id="272976"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>