SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Downloaden Sie, um offline zu lesen
penk
Chen, Ping-Hsun
  penk@ullab.org
  http://penkia.net
Hi, I’m
penk
@audreyt
signed on my
 llama book
$PENK->{'YAPC::Tiny'};
Class-Selection Bot
 use LWP::UserAgent;
Class-Selection Bot
 use LWP::UserAgent;

 PTT BBS Earning Bot
       use Expect;
Class-Selection Bot
 use LWP::UserAgent;

 PTT BBS Earning Bot
       use Expect;

 WordPress.com Posting Bot
      use WWW::Mechanize;
Class-Selection Bot
 use LWP::UserAgent;

 PTT BBS Earning Bot
       use Expect;

 WordPress.com Posting Bot
      use WWW::Mechanize;

    Markov-chain Talking Bot
         use Gtk2::GladeXML;
$PENK->{'YAPC::Tiny'};
$PENK->{'YAPC::Tiny'};
xPUD
Shortest Path to the Cloud
Web IS the Desktop


• Minimal Browser OS (Firefox currently)
• Small, weighing under 35MB
• Fast, boot within 10 seconds
•     , fully localized with CJK support
“plate” web UI framework
“plate” web UI framework
“plate” web UI framework
“plate” web UI framework
“plate” web UI framework
<embed> rich client into web
Setup WiFi connection
Open firefox inside firefox
..and window management
http://github.com/penk/mkxpud
http://github.com/penk/mkxpud
Too lazy to design
  a web page?
Kiosk
                          Mode!




boot: url=http://facebook.com
http://xpud.org
Thanks!

Weitere ähnliche Inhalte

Was ist angesagt?

WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014Patrick Meenan
 
Hands on performance testing and analysis with web pagetest
Hands on performance testing and analysis with web pagetestHands on performance testing and analysis with web pagetest
Hands on performance testing and analysis with web pagetestPatrick Meenan
 
S&T What I know about Node 110817
S&T What I know about Node 110817S&T What I know about Node 110817
S&T What I know about Node 110817Dan Dineen
 
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…Atwix
 
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)Ericom Software
 
JavaScript development methodology
JavaScript development methodologyJavaScript development methodology
JavaScript development methodologyAleksander Fabijan
 
Word press workflows and gulp
Word press workflows and gulpWord press workflows and gulp
Word press workflows and gulpEli McMakin
 
The Mysteries Of JavaScript-Fu (@media SF Edition)
The Mysteries Of JavaScript-Fu (@media SF Edition)The Mysteries Of JavaScript-Fu (@media SF Edition)
The Mysteries Of JavaScript-Fu (@media SF Edition)danwrong
 
From One to a Cluster
From One to a ClusterFrom One to a Cluster
From One to a Clusterguestd34230
 
Google Chromebook for the Enterprise: Yeah or Meh?
Google Chromebook for the Enterprise: Yeah or Meh?Google Chromebook for the Enterprise: Yeah or Meh?
Google Chromebook for the Enterprise: Yeah or Meh?Ericom Software
 
Comet: an Overview and a New Solution Called Jabbify
Comet: an Overview and a New Solution Called JabbifyComet: an Overview and a New Solution Called Jabbify
Comet: an Overview and a New Solution Called JabbifyBrian Moschel
 
Geeky Academy Week 3 :: Vagrant + Puppet
Geeky Academy Week 3 :: Vagrant + PuppetGeeky Academy Week 3 :: Vagrant + Puppet
Geeky Academy Week 3 :: Vagrant + PuppetSomkiat Puisungnoen
 
Tutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xamppTutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xamppLailani Fitria
 
Phorum MySQL tricks
Phorum MySQL tricksPhorum MySQL tricks
Phorum MySQL tricksguestd34230
 
Database and Public Endpoints redundancy on Azure (CloudBrew)
Database and Public Endpoints redundancy on Azure (CloudBrew)Database and Public Endpoints redundancy on Azure (CloudBrew)
Database and Public Endpoints redundancy on Azure (CloudBrew)Radu Vunvulea
 

Was ist angesagt? (20)

WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014WebPagetest Power Users - Velocity 2014
WebPagetest Power Users - Velocity 2014
 
Hands on performance testing and analysis with web pagetest
Hands on performance testing and analysis with web pagetestHands on performance testing and analysis with web pagetest
Hands on performance testing and analysis with web pagetest
 
S&T What I know about Node 110817
S&T What I know about Node 110817S&T What I know about Node 110817
S&T What I know about Node 110817
 
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
Host and Boast: Best Practices for Magento Hosting | Imagine 2013 Technolog…
 
Web services
Web servicesWeb services
Web services
 
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
WebSockets Everywhere: the Future Transport Protocol for Everything (Almost)
 
JavaScript development methodology
JavaScript development methodologyJavaScript development methodology
JavaScript development methodology
 
Word press workflows and gulp
Word press workflows and gulpWord press workflows and gulp
Word press workflows and gulp
 
The Mysteries Of JavaScript-Fu (@media SF Edition)
The Mysteries Of JavaScript-Fu (@media SF Edition)The Mysteries Of JavaScript-Fu (@media SF Edition)
The Mysteries Of JavaScript-Fu (@media SF Edition)
 
From One to a Cluster
From One to a ClusterFrom One to a Cluster
From One to a Cluster
 
Google Chromebook for the Enterprise: Yeah or Meh?
Google Chromebook for the Enterprise: Yeah or Meh?Google Chromebook for the Enterprise: Yeah or Meh?
Google Chromebook for the Enterprise: Yeah or Meh?
 
Comet: an Overview and a New Solution Called Jabbify
Comet: an Overview and a New Solution Called JabbifyComet: an Overview and a New Solution Called Jabbify
Comet: an Overview and a New Solution Called Jabbify
 
COMET in Plone
COMET in PloneCOMET in Plone
COMET in Plone
 
Geeky Academy Week 3 :: Vagrant + Puppet
Geeky Academy Week 3 :: Vagrant + PuppetGeeky Academy Week 3 :: Vagrant + Puppet
Geeky Academy Week 3 :: Vagrant + Puppet
 
Tutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xamppTutorial sederhana netbeans & xampp
Tutorial sederhana netbeans & xampp
 
Phorum MySQL tricks
Phorum MySQL tricksPhorum MySQL tricks
Phorum MySQL tricks
 
Os Alrubaie
Os AlrubaieOs Alrubaie
Os Alrubaie
 
Database and Public Endpoints redundancy on Azure (CloudBrew)
Database and Public Endpoints redundancy on Azure (CloudBrew)Database and Public Endpoints redundancy on Azure (CloudBrew)
Database and Public Endpoints redundancy on Azure (CloudBrew)
 
Intro to WebSockets
Intro to WebSocketsIntro to WebSockets
Intro to WebSockets
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
 

Andere mochten auch

xPad - Building Simple Tablet OS with Gtk/WebKit
xPad - Building Simple Tablet OS with Gtk/WebKitxPad - Building Simple Tablet OS with Gtk/WebKit
xPad - Building Simple Tablet OS with Gtk/WebKitPing-Hsun Chen
 
MeeTo - Android meets MeeGo
MeeTo - Android meets MeeGoMeeTo - Android meets MeeGo
MeeTo - Android meets MeeGoPing-Hsun Chen
 
xPUD - Shortest Path to the Cloud
xPUD - Shortest Path to the CloudxPUD - Shortest Path to the Cloud
xPUD - Shortest Path to the CloudPing-Hsun Chen
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your BusinessBarry Feldman
 

Andere mochten auch (7)

SCA 2009 暑訓講義
SCA 2009 暑訓講義SCA 2009 暑訓講義
SCA 2009 暑訓講義
 
xPUD Lightning Talk
xPUD Lightning TalkxPUD Lightning Talk
xPUD Lightning Talk
 
xPad - Building Simple Tablet OS with Gtk/WebKit
xPad - Building Simple Tablet OS with Gtk/WebKitxPad - Building Simple Tablet OS with Gtk/WebKit
xPad - Building Simple Tablet OS with Gtk/WebKit
 
SCA 2009 寒訓講義
SCA 2009 寒訓講義SCA 2009 寒訓講義
SCA 2009 寒訓講義
 
MeeTo - Android meets MeeGo
MeeTo - Android meets MeeGoMeeTo - Android meets MeeGo
MeeTo - Android meets MeeGo
 
xPUD - Shortest Path to the Cloud
xPUD - Shortest Path to the CloudxPUD - Shortest Path to the Cloud
xPUD - Shortest Path to the Cloud
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business32 Ways a Digital Marketing Consultant Can Help Grow Your Business
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
 

Ähnlich wie $PENK->{'YAPC::Tiny'};

Real-Time Web applications with WebSockets
Real-Time Web applications with WebSocketsReal-Time Web applications with WebSockets
Real-Time Web applications with WebSocketsStanislav Zozulia
 
Web Optimization Level: Paranoid
Web Optimization Level: ParanoidWeb Optimization Level: Paranoid
Web Optimization Level: Paranoidrobin_sy
 
Php Inside - confoo 2011 - Derick Rethans
Php Inside -  confoo 2011 - Derick RethansPhp Inside -  confoo 2011 - Derick Rethans
Php Inside - confoo 2011 - Derick RethansBachkoutou Toutou
 
The Beginning - Jan 20 2009
The Beginning - Jan 20 2009The Beginning - Jan 20 2009
The Beginning - Jan 20 2009Abhishek Mishra
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSocketsRoland M
 
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTYWilliam Chong
 
Comet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way MediumComet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way MediumJoe Walker
 
Going Live! with Comet
Going Live! with CometGoing Live! with Comet
Going Live! with CometSimon Willison
 
Managing and Scaling Puppet - PuppetConf 2014
Managing and Scaling Puppet - PuppetConf 2014Managing and Scaling Puppet - PuppetConf 2014
Managing and Scaling Puppet - PuppetConf 2014Miguel Zuniga
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over WebsocketIntroduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocketsametmax
 
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPPFast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPPPradeep Elankumaran
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorialoscon2007
 

Ähnlich wie $PENK->{'YAPC::Tiny'}; (20)

Real-Time Web applications with WebSockets
Real-Time Web applications with WebSocketsReal-Time Web applications with WebSockets
Real-Time Web applications with WebSockets
 
Web Optimization Level: Paranoid
Web Optimization Level: ParanoidWeb Optimization Level: Paranoid
Web Optimization Level: Paranoid
 
WebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossibleWebSockets with PHP: Mission impossible
WebSockets with PHP: Mission impossible
 
Grizzly Comet Aquarium Paris
Grizzly Comet Aquarium ParisGrizzly Comet Aquarium Paris
Grizzly Comet Aquarium Paris
 
Php Inside - confoo 2011 - Derick Rethans
Php Inside -  confoo 2011 - Derick RethansPhp Inside -  confoo 2011 - Derick Rethans
Php Inside - confoo 2011 - Derick Rethans
 
Blazor v1.1
Blazor v1.1Blazor v1.1
Blazor v1.1
 
The Beginning - Jan 20 2009
The Beginning - Jan 20 2009The Beginning - Jan 20 2009
The Beginning - Jan 20 2009
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
 
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
5 年後還是新手 - WordPress Plugin 開發大冒險 - GOTY
 
Comet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way MediumComet: Making The Web a 2-Way Medium
Comet: Making The Web a 2-Way Medium
 
Going Live! with Comet
Going Live! with CometGoing Live! with Comet
Going Live! with Comet
 
#Webperf Choreography
#Webperf Choreography#Webperf Choreography
#Webperf Choreography
 
Managing and Scaling Puppet - PuppetConf 2014
Managing and Scaling Puppet - PuppetConf 2014Managing and Scaling Puppet - PuppetConf 2014
Managing and Scaling Puppet - PuppetConf 2014
 
Http Status Report
Http Status ReportHttp Status Report
Http Status Report
 
Grizzly 20080925 V2
Grizzly 20080925 V2Grizzly 20080925 V2
Grizzly 20080925 V2
 
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over WebsocketIntroduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
Introduction to WAMP, a protocol enabling PUB/SUB and RPC over Websocket
 
Front End Performance
Front End PerformanceFront End Performance
Front End Performance
 
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPPFast & Scalable Front/Back-ends using Ruby, Rails & XMPP
Fast & Scalable Front/Back-ends using Ruby, Rails & XMPP
 
NullMQ @ PDX
NullMQ @ PDXNullMQ @ PDX
NullMQ @ PDX
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorial
 

$PENK->{'YAPC::Tiny'};

Hinweis der Redaktion

  1. &amp;#x4ECA;&amp;#x5929;&amp;#x4F86;&amp;#x81EA;&amp;#x6211;&amp;#x4ECB;&amp;#x7D39;&amp;#x7684;..
  2. Penk, &amp;#x6D41;&amp;#x6D6A;&amp;#x6253;&amp;#x5DE5;&amp;#x8005; &amp;#x8001;&amp;#x5BB6;&amp;#x4F4F;&amp;#x9AD8;&amp;#x96C4;, &amp;#x53F0;&amp;#x4E2D;&amp;#x5538;&amp;#x66F8;, &amp;#x53F0;&amp;#x5317;&amp;#x5DE5;&amp;#x4F5C;, &amp;#x5973;&amp;#x53CB;&amp;#x5728;&amp;#x5B9C;&amp;#x862D; &amp;#x6559;&amp;#x6388;&amp;#x8A0E;&amp;#x53AD;&amp;#x7684;&amp;#x7814;&amp;#x7A76;&amp;#x751F;, &amp;#x56DB;&amp;#x8655;&amp;#x63A5;&amp;#x6848;, &amp;#x9003;&amp;#x907F;&amp;#x5175;&amp;#x5F79;
  3. &amp;#x6211;&amp;#x7684;&amp;#x99F1;&amp;#x99AC;&amp;#x66F8;&amp;#x4E0A;&amp;#x6709; (&amp;#x5927;&amp;#x90E8;&amp;#x5206;) &amp;#x8B6F;&amp;#x8005;&amp;#x7C3D;&amp;#x540D;! &amp;#x85DD;&amp;#x529B;&amp;#x5354;, &amp;#x9ED1;&amp;#x5BA2;&amp;#x8D70;&amp;#x5531;&amp;#x5718;, &amp;#x9109;&amp;#x4E0B;&amp;#x5C0F;&amp;#x5B69; &amp;#x96C4;&amp;#x4E2D;&amp;#x96C4;&amp;#x5973;&amp;#x5927;&amp;#x9732;&amp;#x71DF;, P3P &amp;#x9AD8;&amp;#x96C4;&amp;#x5834; &amp;#x4EF0;&amp;#x6155;&amp;#x5728;&amp;#x5EA7;&amp;#x8A31;&amp;#x591A;&amp;#x4F4D;&amp;#x5927;&amp;#x5E2B;, &amp;#x4E5F;&amp;#x4E00;&amp;#x76F4;&amp;#x5230;&amp;#x6700;&amp;#x8FD1;&amp;#x624D;&amp;#x6709;&amp;#x6A5F;&amp;#x6703;&amp;#x66F4;&amp;#x8A8D;&amp;#x8B58;
  4. Win32:: Tk, PAR Markov-Chain
  5. Win32:: Tk, PAR Markov-Chain
  6. Win32:: Tk, PAR Markov-Chain
  7. Win32:: Tk, PAR Markov-Chain
  8. &amp;#x539F;&amp;#x672C;&amp;#x4EE5;&amp;#x70BA; Perl &amp;#x6703;&amp;#x50CF;&amp;#x4EE5;&amp;#x524D;&amp;#x8A8D;&amp;#x8B58;&amp;#x904E;&amp;#x7684;&amp;#x5973;&amp;#x5B69;&amp;#x4E00;&amp;#x6A23; &amp;#x300C;&amp;#x90A3;&amp;#x4E9B;&amp;#x5E74;&amp;#x6211;&amp;#x5011;&amp;#x4E00;&amp;#x8D77;&amp;#x8FFD;&amp;#x7684;&amp;#x5973;&amp;#x5B69;&amp;#x300D; &amp;#x56E0;&amp;#x70BA;&amp;#x500B;&amp;#x6027;&amp;#x4E0D;&amp;#x5408;&amp;#x6216;&amp;#x5E74;&amp;#x83EF;&amp;#x8001;&amp;#x53BB;&amp;#x800C;&amp;#x6F38;&amp;#x884C;&amp;#x6F38;&amp;#x9060;, &amp;#x90A3;&amp;#x4E00;&amp;#x5E74;&amp;#x7684;&amp;#x5E78;&amp;#x798F;&amp;#x6642;&amp;#x5149;, &amp;#x6240;&amp;#x6709;&amp;#x7684;&amp;#x5FEB;&amp;#x6A02;&amp;#x548C;&amp;#x6B61;&amp;#x7B11;&amp;#x4E5F;&amp;#x6703;&amp;#x5316;&amp;#x70BA;&amp;#x9059;&amp;#x9060;&amp;#x7684;&amp;#x4E00;&amp;#x62B9;&amp;#x56DE;&amp;#x61B6;
  9. &amp;#x4F46; Perl &amp;#x771F;&amp;#x7684;&amp;#x50CF;&amp;#x90A3;&amp;#x4E9B;&amp;#x6211;&amp;#x8FFD;&amp;#x904E;&amp;#x7684;&amp;#x5973;&amp;#x5B69; &amp;#x4ECD;&amp;#x7136;&amp;#x6703;&amp;#x4E09;&amp;#x4E0D;&amp;#x4E94;&amp;#x6642;&amp;#x4EE5;&amp;#x5404;&amp;#x7A2E;&amp;#x85C9;&amp;#x53E3;&amp;#x73FE;&amp;#x8EAB; &amp;#x6216;&amp;#x8000;&amp;#x6B66;&amp;#x63DA;&amp;#x5A01;, &amp;#x6216;&amp;#x50B7;&amp;#x5FC3;&amp;#x966A;&amp;#x4F34;, &amp;#x7E3D;&amp;#x4E4B;&amp;#x4ECD;&amp;#x7136;&amp;#x7CFE;&amp;#x845B;&amp;#x4E0D;&amp;#x6E05;
  10. XUL JavaScript / system API
  11. &amp;#x4E3B;&amp;#x756B;&amp;#x9762;, &amp;#x7CFB;&amp;#x7D71;&amp;#x8CC7;&amp;#x8A0A;/&amp;#x5E38;&amp;#x7528;&amp;#x52D5;&amp;#x4F5C; &amp;#x5DE6;&amp;#x908A;&amp;#x7684;&amp;#x5206;&amp;#x9801;
  12. &amp;#x4E3B;&amp;#x756B;&amp;#x9762;, &amp;#x7CFB;&amp;#x7D71;&amp;#x8CC7;&amp;#x8A0A;/&amp;#x5E38;&amp;#x7528;&amp;#x52D5;&amp;#x4F5C; &amp;#x5DE6;&amp;#x908A;&amp;#x7684;&amp;#x5206;&amp;#x9801;
  13. &amp;#x4E3B;&amp;#x756B;&amp;#x9762;, &amp;#x7CFB;&amp;#x7D71;&amp;#x8CC7;&amp;#x8A0A;/&amp;#x5E38;&amp;#x7528;&amp;#x52D5;&amp;#x4F5C; &amp;#x5DE6;&amp;#x908A;&amp;#x7684;&amp;#x5206;&amp;#x9801;
  14. &amp;#x4E3B;&amp;#x756B;&amp;#x9762;, &amp;#x7CFB;&amp;#x7D71;&amp;#x8CC7;&amp;#x8A0A;/&amp;#x5E38;&amp;#x7528;&amp;#x52D5;&amp;#x4F5C; &amp;#x5DE6;&amp;#x908A;&amp;#x7684;&amp;#x5206;&amp;#x9801;
  15. i18n, Perl JSON
  16. for small screen
  17. &amp;#x6703;&amp;#x6539;&amp;#x7DB2;&amp;#x9801;&amp;#x5C31;&amp;#x80FD;&amp;#x6539;&amp;#x4ECB;&amp;#x9762;
  18. &amp;#x9023;&amp;#x7DB2;&amp;#x9801;&amp;#x90FD;&amp;#x61F6;&amp;#x5F97;&amp;#x5BEB;?
  19. &amp;#x4F60;&amp;#x53EF;&amp;#x4EE5;&amp;#x6709;&amp;#x4E00;&amp;#x5957; Live &amp;#x7CFB;&amp;#x7D71;, &amp;#x4E00;&amp;#x958B;&amp;#x6A5F;&amp;#x5C31;&amp;#x9032;&amp;#x5230;&amp;#x6307;&amp;#x5B9A;&amp;#x7684;&amp;#x7DB2;&amp;#x9801;