<?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>176456</bug_id>
          
          <creation_ts>2017-09-06 08:19:43 -0700</creation_ts>
          <short_desc>Add modern decoders for POD types</short_desc>
          <delta_ts>2017-09-27 12:38: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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1345920</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 08:19:43 -0700</bug_when>
    <thetext>Add modern decoders for POD types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345921</commentid>
    <comment_count>1</comment_count>
      <attachid>320019</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 08:20:42 -0700</bug_when>
    <thetext>Created attachment 320019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345982</commentid>
    <comment_count>2</comment_count>
      <attachid>320019</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-09-06 10:04:58 -0700</bug_when>
    <thetext>Comment on attachment 320019
Patch

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

r=me

&gt; Source/WebKit/Platform/IPC/Decoder.cpp:241
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;bool&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;uint8_t&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;uint16_t&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;uint32_t&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;uint64_t&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;int32_t&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;int64_t&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}
&gt; +
&gt; +Decoder&amp; Decoder::operator&gt;&gt;(std::optional&lt;float&gt;&amp; optional)
&gt; +{
&gt; +    return getOptional(optional);
&gt; +}

Kind of weird that our idiom is to use overloading instead of a template parameter for these &gt;&gt; functions and for our decode functions.

If we&apos;re just trying to verify that our type is a POD type, we can use std::is_pod.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345989</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 10:19:37 -0700</bug_when>
    <thetext>With enums (which are also POD types) we also check to see if they are valid enums.  I think the intent was once to only have certain types serializable, but since that list has grown so much maybe we should clean this up a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346077</commentid>
    <comment_count>4</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-06 13:26:58 -0700</bug_when>
    <thetext>http://trac.webkit.org/r221698</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1346118</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-06 15:26:06 -0700</bug_when>
    <thetext>Seems like we should find a way to allow any type to be optional and not write out each function like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353564</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:38:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693681&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320019</attachid>
            <date>2017-09-06 08:20:42 -0700</date>
            <delta_ts>2017-09-06 10:04:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176456-20170906082042.patch</filename>
            <type>text/plain</type>
            <size>7670</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE2NzApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE3LTA5LTA2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIG1vZGVybiBk
ZWNvZGVycyBmb3IgUE9EIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzY0NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFBsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcDoKKyAgICAgICAgKElQQzo6
RGVjb2Rlcjo6Z2V0T3B0aW9uYWwpOgorICAgICAgICAoSVBDOjpEZWNvZGVyOjpvcGVyYXRvcj4+
KToKKyAgICAgICAgKiBQbGF0Zm9ybS9JUEMvRGVjb2Rlci5oOgorICAgICAgICAqIFNoYXJlZC9O
YXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5o
OgorCiAyMDE3LTA5LTA2ICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAg
ICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRv
IHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQgZnJhbWUgc2Nyb2xsaW5nCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9EZWNvZGVyLmNwcAkocmV2aXNpb24gMjIxNDY3KQorKysg
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvRGVjb2Rlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE4OCw2ICsxODgsNjMgQEAgc3RhdGljIHZvaWQgZGVjb2RlVmFsdWVGcm9tQnVmZmVyKFR5cGUm
IAogICAgIGJ1ZmZlclBvc2l0aW9uICs9IHNpemVvZihUeXBlKTsKIH0KIAordGVtcGxhdGU8dHlw
ZW5hbWUgVHlwZT4KK0RlY29kZXImIERlY29kZXI6OmdldE9wdGlvbmFsKHN0ZDo6b3B0aW9uYWw8
VHlwZT4mIG9wdGlvbmFsKQoreworICAgIFR5cGUgcmVzdWx0OworICAgIGlmICghYWxpZ25CdWZm
ZXJQb3NpdGlvbihzaXplb2YocmVzdWx0KSwgc2l6ZW9mKHJlc3VsdCkpKQorICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgCisgICAgZGVjb2RlVmFsdWVGcm9tQnVmZmVyKHJlc3VsdCwgbV9idWZm
ZXJQb3MpOworICAgIG9wdGlvbmFsID0gcmVzdWx0OworICAgIHJldHVybiAqdGhpczsKK30KKwor
RGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGJvb2w+JiBvcHRpb25h
bCkKK3sKKyAgICByZXR1cm4gZ2V0T3B0aW9uYWwob3B0aW9uYWwpOworfQorCitEZWNvZGVyJiBE
ZWNvZGVyOjpvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDhfdD4mIG9wdGlvbmFsKQorewor
ICAgIHJldHVybiBnZXRPcHRpb25hbChvcHRpb25hbCk7Cit9CisKK0RlY29kZXImIERlY29kZXI6
Om9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MTZfdD4mIG9wdGlvbmFsKQoreworICAgIHJl
dHVybiBnZXRPcHRpb25hbChvcHRpb25hbCk7Cit9CisKK0RlY29kZXImIERlY29kZXI6Om9wZXJh
dG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mIG9wdGlvbmFsKQoreworICAgIHJldHVybiBn
ZXRPcHRpb25hbChvcHRpb25hbCk7Cit9CisKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4o
c3RkOjpvcHRpb25hbDx1aW50NjRfdD4mIG9wdGlvbmFsKQoreworICAgIHJldHVybiBnZXRPcHRp
b25hbChvcHRpb25hbCk7Cit9CisKK0RlY29kZXImIERlY29kZXI6Om9wZXJhdG9yPj4oc3RkOjpv
cHRpb25hbDxpbnQzMl90PiYgb3B0aW9uYWwpCit7CisgICAgcmV0dXJuIGdldE9wdGlvbmFsKG9w
dGlvbmFsKTsKK30KKworRGVjb2RlciYgRGVjb2Rlcjo6b3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFs
PGludDY0X3Q+JiBvcHRpb25hbCkKK3sKKyAgICByZXR1cm4gZ2V0T3B0aW9uYWwob3B0aW9uYWwp
OworfQorCitEZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+
JiBvcHRpb25hbCkKK3sKKyAgICByZXR1cm4gZ2V0T3B0aW9uYWwob3B0aW9uYWwpOworfQorCitE
ZWNvZGVyJiBEZWNvZGVyOjpvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiYgb3B0aW9u
YWwpCit7CisgICAgcmV0dXJuIGdldE9wdGlvbmFsKG9wdGlvbmFsKTsKK30KKwogYm9vbCBEZWNv
ZGVyOjpkZWNvZGUoYm9vbCYgcmVzdWx0KQogewogICAgIGlmICghYWxpZ25CdWZmZXJQb3NpdGlv
bihzaXplb2YocmVzdWx0KSwgc2l6ZW9mKHJlc3VsdCkpKQpJbmRleDogU291cmNlL1dlYktpdC9Q
bGF0Zm9ybS9JUEMvRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvUGxhdGZv
cm0vSVBDL0RlY29kZXIuaAkocmV2aXNpb24gMjIxNjIwKQorKysgU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvRGVjb2Rlci5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCwxNCArNzgsMjMgQEAgcHVi
bGljOgogICAgIGJvb2wgZGVjb2RlVmFyaWFibGVMZW5ndGhCeXRlQXJyYXkoRGF0YVJlZmVyZW5j
ZSYpOwogCiAgICAgYm9vbCBkZWNvZGUoYm9vbCYpOworICAgIERlY29kZXImIG9wZXJhdG9yPj4o
c3RkOjpvcHRpb25hbDxib29sPiYpOwogICAgIGJvb2wgZGVjb2RlKHVpbnQ4X3QmKTsKKyAgICBE
ZWNvZGVyJiBvcGVyYXRvcj4+KHN0ZDo6b3B0aW9uYWw8dWludDhfdD4mKTsKICAgICBib29sIGRl
Y29kZSh1aW50MTZfdCYpOworICAgIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1
aW50MTZfdD4mKTsKICAgICBib29sIGRlY29kZSh1aW50MzJfdCYpOworICAgIERlY29kZXImIG9w
ZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50MzJfdD4mKTsKICAgICBib29sIGRlY29kZSh1aW50
NjRfdCYpOworICAgIERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDx1aW50NjRfdD4m
KTsKICAgICBib29sIGRlY29kZShpbnQzMl90Jik7CisgICAgRGVjb2RlciYgb3BlcmF0b3I+Pihz
dGQ6Om9wdGlvbmFsPGludDMyX3Q+Jik7CiAgICAgYm9vbCBkZWNvZGUoaW50NjRfdCYpOworICAg
IERlY29kZXImIG9wZXJhdG9yPj4oc3RkOjpvcHRpb25hbDxpbnQ2NF90PiYpOwogICAgIGJvb2wg
ZGVjb2RlKGZsb2F0Jik7CisgICAgRGVjb2RlciYgb3BlcmF0b3I+PihzdGQ6Om9wdGlvbmFsPGZs
b2F0PiYpOwogICAgIGJvb2wgZGVjb2RlKGRvdWJsZSYpOworICAgIERlY29kZXImIG9wZXJhdG9y
Pj4oc3RkOjpvcHRpb25hbDxkb3VibGU+Jik7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFPgog
ICAgIGF1dG8gZGVjb2RlKEUmIGUpIC0+IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19lbnVtPEU+
Ojp2YWx1ZSwgYm9vbD4KQEAgLTE0Myw2ICsxNTIsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IGJvb2wgYWxpZ25CdWZmZXJQb3NpdGlvbih1bnNpZ25lZCBhbGlnbm1lbnQsIHNpemVfdCk7CiAg
ICAgYm9vbCBidWZmZXJJc0xhcmdlRW5vdWdoVG9Db250YWluKHVuc2lnbmVkIGFsaWdubWVudCwg
c2l6ZV90KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPiBEZWNvZGVyJiBnZXRP
cHRpb25hbChzdGQ6Om9wdGlvbmFsPFR5cGU+Jik7CiAKICAgICBjb25zdCB1aW50OF90KiBtX2J1
ZmZlcjsKICAgICBjb25zdCB1aW50OF90KiBtX2J1ZmZlclBvczsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDIyMTQ2NykK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksMzAgKzQ5LDUzIEBAIHZvaWQgTmF2aWdhdGlvbkFjdGlvbkRhdGE6OmVu
Y29kZShJUEM6OkUKICAgICBlbmNvZGVyIDw8IGlzUmVkaXJlY3Q7CiB9CiAKLWJvb2wgTmF2aWdh
dGlvbkFjdGlvbkRhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5hdmlnYXRpb25B
Y3Rpb25EYXRhJiByZXN1bHQpCitzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpb25BY3Rpb25EYXRhPiBO
YXZpZ2F0aW9uQWN0aW9uRGF0YTo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlcikKIHsKLSAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShyZXN1bHQubmF2aWdhdGlvblR5cGUpKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0Lm1vZGlm
aWVycykpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51
bShyZXN1bHQubW91c2VCdXR0b24pKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUVudW0ocmVzdWx0LnN5bnRoZXRpY0NsaWNrVHlwZSkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51c2VyR2VzdHVyZVRv
a2VuSWRlbnRpZmllcikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5jYW5IYW5kbGVSZXF1ZXN0KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHJlc3VsdC5zaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
cmVzdWx0LmRvd25sb2FkQXR0cmlidXRlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0
ZXMpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaXNSZWRpcmVjdCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXZWJDb3JlOjpOYXZp
Z2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShu
YXZpZ2F0aW9uVHlwZSkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAg
V2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVu
dW0obW9kaWZpZXJzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBX
ZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b247CisgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZUVudW0obW91c2VCdXR0b24pKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIAor
ICAgIFdlYk1vdXNlRXZlbnQ6OlN5bnRoZXRpY0NsaWNrVHlwZSBzeW50aGV0aWNDbGlja1R5cGU7
CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZUVudW0oc3ludGhldGljQ2xpY2tUeXBlKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAKKyAgICBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90
PiB1c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcjsKKyAgICBkZWNvZGVyID4+IHVzZXJHZXN0dXJl
VG9rZW5JZGVudGlmaWVyOworICAgIGlmICghdXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29s
PiBjYW5IYW5kbGVSZXF1ZXN0OworICAgIGRlY29kZXIgPj4gY2FuSGFuZGxlUmVxdWVzdDsKKyAg
ICBpZiAoIWNhbkhhbmRsZVJlcXVlc3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgCisgICAgV2ViQ29yZTo6U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSBzaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5OworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3kpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IAorICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBkb3dubG9hZEF0dHJpYnV0ZTsKKyAgICBkZWNv
ZGVyID4+IGRvd25sb2FkQXR0cmlidXRlOworICAgIGlmICghZG93bmxvYWRBdHRyaWJ1dGUpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgV2ViQ29yZTo6RmxvYXRQb2lu
dCBjbGlja0xvY2F0aW9uSW5Sb290Vmlld0Nvb3JkaW5hdGVzOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY2xpY2tMb2NhdGlvbkluUm9vdFZpZXdDb29yZGluYXRlcykpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgCisgICAgc3RkOjpvcHRpb25hbDxib29sPiBpc1JlZGlyZWN0
OworICAgIGRlY29kZXIgPj4gaXNSZWRpcmVjdDsKKyAgICBpZiAoIWlzUmVkaXJlY3QpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4g
e3sgV1RGTW92ZShuYXZpZ2F0aW9uVHlwZSksIFdURk1vdmUobW9kaWZpZXJzKSwgV1RGTW92ZSht
b3VzZUJ1dHRvbiksIFdURk1vdmUoc3ludGhldGljQ2xpY2tUeXBlKSwgV1RGTW92ZSgqdXNlckdl
c3R1cmVUb2tlbklkZW50aWZpZXIpLCBXVEZNb3ZlKCpjYW5IYW5kbGVSZXF1ZXN0KSwgV1RGTW92
ZShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KSwgV1RGTW92ZSgqZG93bmxvYWRBdHRyaWJ1
dGUpLCBXVEZNb3ZlKGNsaWNrTG9jYXRpb25JblJvb3RWaWV3Q29vcmRpbmF0ZXMpLCBXVEZNb3Zl
KCppc1JlZGlyZWN0KSB9fTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9OYXZpZ2F0aW9uQWN0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgJKHJldmlzaW9uIDIyMTQ2
NykKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL05hdmlnYXRpb25BY3Rpb25EYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSB7CiAgICAgdm9pZCBlbmNvZGUoSVBDOjpFbmNvZGVyJikgY29u
c3Q7Ci0gICAgc3RhdGljIGJvb2wgZGVjb2RlKElQQzo6RGVjb2RlciYsIE5hdmlnYXRpb25BY3Rp
b25EYXRhJik7CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TmF2aWdhdGlvbkFjdGlvbkRhdGE+
IGRlY29kZShJUEM6OkRlY29kZXImKTsKIAogICAgIFdlYkNvcmU6Ok5hdmlnYXRpb25UeXBlIG5h
dmlnYXRpb25UeXBlIHsgV2ViQ29yZTo6TmF2aWdhdGlvblR5cGU6Ok90aGVyIH07CiAgICAgV2Vi
RXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgeyB9Owo=
</data>
<flag name="review"
          id="340179"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>