¡lú‰}`0ù³°<œ-à�4KeìW¥á‹:ØKy³î�šÈ²¯ø\ú­Ë`pàwKâåYˆiâ[Ø~’µW”É—„D†½7·'xx)‡ò4sKtkiWÆˆlÀØ)‡ò4sKtkiWÆˆlÀØ)‡ò4sKtkiWÆˆlÀØ)‡ò4sKtkiWÆˆlÀØ…?à{=›îh¥!lÖ<’˜ÀÊÌ1¸u}‰Ú³¸ëz1Ì^àE#^mª|€!žZb)‡ò4sKtkiWÆˆlÀØ)‡ò4sKtkiWÆˆlÀØ)‡ò4sKtkiWÆˆlÀØ)‡ò4sKtkiWÆˆlÀØ�Ï9*hØ[Js‹²ƒ=øYA”âë²°"l‰qÅu�VŒÅÙ_>üíèKÃ	ÿƒÜž5Rø¥ÎÎ[:T[‹0FÍmä9cèÍ{?ØÇ5·æ<ûð2rÊË<êI›iŒg…¥Jæ�Q‚­Ü@ÛôÑ»Oçek]q[îï…Ÿn¡ÄÝŸ[nÜõ«¸)ä Ðd6¤Ê›uY}ÓOƒ5¯"UƒCŒ³³kèî©-u‚[�9G?�YN+×ï ÓdEÓÅ�(T’<k.¼L¨ÿWw‡VdqÙ„~-Ø�GùS0y�´?±¥;]!�Ðv„–2“;½ã�U$ëáÑP@�©œˆT<Vr¡ tÃn/ZMŸ™ìPDYn'ÅñÎê€™"€BÀ­L `{º°œK(w À|ÈJ‚‹–KPéz•��Ms”—HÝœÀüõªìîHGÆñÇåbàû¥v8õÔußˆøø?äQÒ)îy�à~ŸEãÏ%²¾ÌÓ‘Úå™vOkÚî�‹©©óE$ÒÐ/Aþˆƒ‡A÷&¤mþxÅý¬5²RuX·&‘¦™*ï'�kê}x17zó«¼“�Ð/Aþˆƒ‡A÷&¤mþúÞWåÜH,Ï˜šI—Ð/Aþˆƒ‡A÷&¤mþÈŠ )Ü|¨i+Ž¡DôÌÀs½ëˆÈœOÑØ�ŸõÐ/Aþˆƒ‡A÷&¤mþT®œOÉÜõªu�žÇ9&Ð/Aþˆƒ‡A÷&¤mþxÅý¬5²RuX·&‘¦™*ï'�kê}x17zó«¼“�Ð/Aþˆƒ‡A÷&¤mþYÿœˆö/›Ñ3ÆÚýšÛõÐ/Aþˆƒ‡A÷&¤mþƒôJGÉ‹^�=Ö:ñ¨|* l�4�OÝ–û½¢´Aö§™ÄFÓ! ÿv@°ý:µº}µœxÜ]ë’*mä‹|W´‘©µ¥CÈÞ‘ú`�®B*ýºÈè:uÜHf«-±ÍH½óYÁ‹5O�Áj…Ÿ�yƒ«�ÊÙšL�4Åþ¬ôÔîNâ5]Up$ýzT�ÒrëèÑ»Oçek]q[îï…Ÿn¡ÄÝŸ[nÜõ«¸)ä Ðd6¤Ê›uY}ÓOƒ5¯"UƒCŒ³³kèî©-u‚[Ú¯Ú‡KÁ¦àCðd¡á‘ëu]š‡ iÃ�¦ñ|°Ê½p–i™K!âÈh+êOä£¯¶,Åk§-þ9zd.O8˜(“/ž+Þ¦SS_ð;{¿dì8¿¨¬	]g*5[Êç�Hýb^‚Eä#Hðêüï¢‘ðæÒq)¥·šÓe5àŽh#;Q!D•¡^,Ÿ�ÐKkîƒ6a“ »ïmG|æZg9<\>â™ÈÅ” fnc÷Ï7BÍöÇÿN;<ëˆÑJ…c³8úÓ—+¹‰}¶Ê9x‰M�äÊî1¶/!djÔ½ˆTwWúôŸÿ!×Eûàb{ó&mjHS2ÍÜ»$ûu¦Ž½“P7vg®ø/rsÁ(‡�Ó–~wÛ°8;ì>ofõ,X
¹C¯.é
o÷ñp}€fˆ.éð¦uúû¨îíPßè(…ì¯Ÿk-ZŒuž©Òbƒå ÅpJJ¾—›üNãè÷áÔ0ó4þŠÀÈý§Ã‚ž4D”Wç j‡æ·VWÆ"5ŸuâçbûK}ó0�˜ÃKêè�˜u+¶=6žúöS72©wÅã¦Ü8â##´¯Ð¯‹XëZ”“Ìã,üï%uÒóè&šYz„×kcZ0EZyþîø"_T¼EÐ/Aþˆƒ‡A÷&¤mþÎÃ¥`!oÊÊZõvÐ/Aþˆƒ‡A÷&¤mþT®œOÉÜõªu�žÇ9&Ð/Aþˆƒ‡A÷&¤mþÞ´ð°¸Z¥ÊU$ÇµkÁ?© :I+@E[�,~òÏÃÅÒ»Ð/Aþˆƒ‡A÷&¤mþãà«:ú:¦š¡jðq·r0²¼BÚ%J0N_ïÐ/Aþˆƒ‡A÷&¤mþ¬èõ«=¤M¼Nœ)>ï}Ð/Aþˆƒ‡A÷&¤mþp>'ñ�<Wæó¡­€TcÄ,2AöþjqyO�6tÐ/Aþˆƒ‡A÷&¤mþû4B7\@bÑzšÙ-×çSì8¿¨¬	]g*5[Êç�Hýb^‚Eä#Hðêüï¢‘ðæÒq)¥·šÓe5àŽh#;Q!D•¡^,Ÿ�ÐKkîƒ6a“ »ïmG|æZg94
d‡`xI©‰4�¬qÂÊ\¶"ó¢,ë‹t—Å°î8p5»ªµ$øÞ}êÊKŠÛƒ#ð�=ÿf|�ãT÷ 4Y:Äª;L½@þÛ1¹:LRº(¶£JÒ—B•ö¢×{£³£¶ojÕÓîbCÛ'¾óño¿Úë}fAZ	eOÌöí×ðh€<[‰<´»¿ÎpÚ4”§U†„9­0Rð	ÃGGj~Ôw›Rˆ›‚Ü@¡¥8ªWFÃY’÷›áug %ƒ&ÞKâµ·EµÏÆË,=* ‹½4ñÖ�rs’j¤äÍ*
ï‰<,—7µ‰ÞVŒÅÙ_>üíèKÃ	ÿƒÜž5Rø¥ÎÎ[:T[‹0FÍmä9cèÍ{?ØÇ5·æ<ûð2rÊË<êI›iŒg…¥Jæ�Q‚­Ü@ÛôÑ»Oçek]q[îï…Ÿn¡Hð˜‰ƒ)–ŒŠÝZ:ö¼¼âÊ‘)ð¸Û°l¢Û‡þé”›ìÆÜôµ‚È(€÷VÒc>KWªŸÆ°ÊKMx,�¡RÎµ\7�9í—¢ï(¯,†	`À�ZÑ:¦žÔÍdq.äàUåþUG#F4É)Sò’
S.ut¬–ÒzÓ#~ŠÒâ�4F «�×>)™¤€†L/{µ•ûG€Ë�:=•óž5�<LMUìm Ï�¯FfÉMýÁa¤Ãæ6÷æ�
˜Áð‹c5=Ë¢×^À™bOæÖJb.�F+Q¶óüz ¿o.ø{ÑfCÐ0)ã1gl&À�³ã#­¬•Þ…ä“�<8
´Á­A‹9±÷ZIÆÝœ$xþ7·óÞGfÐ/Aþˆƒ‡A÷&¤mþãà«:ú:¦š¡jðq·r0²¼BÚ%J0N_ïÐ/Aþˆƒ‡A÷&¤mþ¬èõ«=¤M¼Nœ)>ï}Ð/Aþˆƒ‡A÷&¤mþO˜N¸‰Ú^¿Cž'²]>®±ø"4aˆÐeAón�Ð/Aþˆƒ‡A÷&¤mþr¼ª8Až¾±h¸™,>Lº¥`¾…8+Ô}‡ù9×�uà§Ù|™iü4‡-´=IÑF¡by,«Q™À7ðä¡ \:¢Ê"‘©Ð£1´*Ý]Ð/Aþˆƒ‡A÷&¤mþÀÞÄBMZ}	)C€ÖÓYòÒWüµ×´ˆ&á•I·éèX`\XM$\‚²ÁgÀ�´ÍU$ÄÙ…Ô–*˜}êŒ'áÚ6ÏŸ$Œê!›mavf&Ô$Ë�ÊÙïçð—÷™P‰wÛ,gŒj¢µÔ4ÝD›7Â¨~|¢æí&ºùñ?6°,áÎDíÁJ-c±^ç9Ó.Dx¯«è1cÓíòRÌ¡Î¨k} Áˆ„X@ò	paYÄ¿¢ºçjîâJAf'PP®«§Yï›Yj£ •ò¹2Þ Ø'*ÇëpìÚ½—OŒ©›[tÝ±ª~|Î¥Ö3O¯ÆLOx'³[Þ`ö×±òBR©ØUÿ©Ãj¤“ÛI`�ÞrõÞä¸’Ñ.öÎù2’?JLíÆÒ—w¡0x¼�´C+K�ƒö¡K
›='Š€?NÚ|›0Š×U·Ãà ;4)jáBŒôn--†~«'(ßúƒSK]`1>'äFú•8˜ÉÚ6ÏŸ$Œê!›mavf&Ô$Ë�ÊÙïçð—÷™P‰wÛ,gŒj¢µÔ4ÝD›7Â¨~|¢æí&ºùñ?6°,áÎDíÁJ-c±^ç9Ó.Dx¯«è1cÓíòRÌ¡Î¨†r6¦w#­ÍhBý�ñ¹å?VrÿŽÛ yûÜUi¹üƒ$Ï"N[CG¿%ë‰ãß€¬T^ê<”Ã\
yeŸ)˜¬øp‚Œ°ES5Ù ÎKŠÛƒ#ð�=ÿf|�ãT÷ŽÃë ºBÁ6Ø›\Øeœk-'Ž×öB8ÅÊöR<ç[ü ¥_ÀÁÒ®šÏN§ða¬dMÝß8¸v¼yÆ]®›ÌÜ2q¼Âéî�uƒÿÙ¨H=ñ=Sâ•ú*B‡ï®«E[Æ³áj�ò€²€ÔèlGd¶^¬�u§E«¾”úŒ³7Ì…	Ö.ÀÈð”'‡Jô×£qO¹­Ž´•cÞ¤Jø^ MB›g‚Òzc"Ã‹©Ùüæ,þHD^;êV�™+þðq ü©<Ë6–Zlúíæt˜¨~÷ˆ°-CßõGÅ„Z{ßÇwP·r0²¼BÚ%J0N_ïÐ/Aþˆƒ‡A÷&¤mþ
ÒèÖw/wÞ#"/ý•+.Ð/Aþˆƒ‡A÷&¤mþ Ÿ-el�°Ið¤Ð/Aþˆƒ‡A÷&¤mþ³È³3ð6ˆ3…ÒPý™’˜W#À¼>ÇÂë8åµúòÒWüµ×´ˆ&á•I·éèX©mS¹¾¿Øƒ<ïÑíÁŽÉ?ø©Žzª‚l2˜o¾Ì¨sEZ�…£™�®=Žo3£«ÐgœÐ/Aþˆƒ‡A÷&¤mþ&ö¡{7h—%7.´VêÉHáÐ/Aþˆƒ‡A÷&¤mþ8×h¿Kõ9âÅ1ø‚ÛAkµÓ…Ð¨¦Ñ	*ôS]_Ð/Aþˆƒ‡A÷&¤mþÚÚ%þ} ÚkêY¤*ä±¿!(LáàîÒÄ��ÞnXCÅMfeê"‘·ƒ|Ëì/ÊXè|¼êì�^æ'	÷Ô‰¡{Ä”µ}BB¬êˆê(”Æ��ó&á{Avµp´Rœ¹¥ÁŽ3çåÞºAw
‡–¿LÆÚU¤'x|øhóQ bz˜1šð¡XŸÃËÂ?EoÝŠ)A—Ëîg‰púO-ªQ#xXcÜM‘àZI¼sÕÄÆ napi_property_attributes attributes,
    void* data) {
  napi_value nameValue = name;
  return PropertyDescriptor::Accessor(
      nameValue, getter, setter, attributes, data);
}

template <typename Callable>
inline PropertyDescriptor PropertyDescriptor::Function(
    const char* utf8name,
    Callable cb,
    napi_property_attributes attributes,
    void* /*data*/) {
  using ReturnType = decltype(cb(CallbackInfo(nullptr, nullptr)));
  using CbData = details::CallbackData<Callable, ReturnType>;
  // TODO: Delete when the function is destroyed
  auto callbackData = new CbData({cb, nullptr});

  return PropertyDescriptor({utf8name,
                             nullptr,
                             CbData::Wrapper,
                             nullptr,
                             nullptr,
                             nullptr,
                             attributes,
                             callbackData});
}

template <typename Callable>
inline PropertyDescriptor PropertyDescriptor::Function(
    const std::string& utf8name,
    Callable cb,
    napi_property_attributes attributes,
    void* data) {
  return Function(utf8name.c_str(), cb, attributes, data);
}

template <typename Callable>
inline PropertyDescriptor PropertyDescriptor::Function(
    napi_value name,
    Callable cb,
    napi_property_attributes attributes,
    void* /*data*/) {
  using ReturnType = decltype(cb(CallbackInfo(nullptr, nullptr)));
  using CbData = details::CallbackData<Callable, ReturnType>;
  // TODO: Delete when the function is destroyed
  auto callbackData = new CbData({cb, nullptr});

  return PropertyDescriptor({nullptr,
                             name,
                             CbData::Wrapper,
                             nullptr,
                             nullptr,
                             nullptr,
                             attributes,
                             callbackData});
}

template <typename Callable>
inline PropertyDescriptor PropertyDescriptor::Function(
    Name name, Callable cb, napi_property_attributes attributes, void* data) {
  napi_value nameValue = name;
  return PropertyDescriptor::Function(nameValue, cb, attributes, data);
}

#endif  // !SRC_NAPI_INL_DEPRECATED_H_
