Change the kernel dev_t, representing a pointer to a specinfo structure,
[dragonfly.git] / sys / net / i4b / driver / i4b_tel.c
1 /*
2  * Copyright (c) 1997, 2001 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  *
25  *---------------------------------------------------------------------------
26  *
27  *      i4b_tel.c - device driver for ISDN telephony
28  *      --------------------------------------------
29  *
30  * $FreeBSD: src/sys/i4b/driver/i4b_tel.c,v 1.10.2.4 2001/12/16 15:12:57 hm Exp $
31  * $DragonFly: src/sys/net/i4b/driver/i4b_tel.c,v 1.14 2006/09/10 01:26:39 dillon Exp $
32  *
33  *      last edit-date: [Sat Aug 11 18:07:05 2001]
34  *
35  *---------------------------------------------------------------------------*/
36
37 #include "use_i4btel.h"
38
39 #if NI4BTEL > 0
40
41 #undef I4BTELDEBUG
42
43 #include <sys/param.h>
44 #include <sys/systm.h>
45
46 #include <sys/ioccom.h>
47 #include <sys/poll.h>
48
49 #include <sys/conf.h>
50 #include <sys/uio.h>
51 #include <sys/kernel.h>
52 #include <sys/mbuf.h>
53 #include <sys/socket.h>
54 #include <net/if.h>
55 #include <sys/thread2.h>
56 #include <sys/tty.h>
57
58 #ifdef DEVFS
59 #include <sys/devfsext.h>
60 #endif
61
62 #include <net/i4b/include/machine/i4b_ioctl.h>
63 #include <net/i4b/include/machine/i4b_tel_ioctl.h>
64 #include <net/i4b/include/machine/i4b_debug.h>
65
66 #include "../include/i4b_global.h"
67 #include "../include/i4b_mbuf.h"
68 #include "../include/i4b_l3l4.h"
69 #include "../layer4/i4b_l4.h"
70
71 /* minor number: lower 6 bits = unit number */
72
73 #define UNITBITS        6
74 #define UNITMASK        0x3f
75 #define UNIT(n)         (minor(n) & UNITMASK)
76
77 /* minor number: upper 2 bits = function number */
78
79 #define FUNCMASK        0x03
80 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
81
82 #define FUNCTEL         0       /* 0 = normal i4btel device     */
83 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
84
85 #define NOFUNCS         2       /* number of device classes     */
86
87 typedef struct {
88
89         /* used only in func = FUNCTEL */
90
91         drvr_link_t             drvr_linktab;   /* driver linktab */
92         isdn_link_t             *isdn_linktab;  /* isdn linktab */
93         int                     audiofmt;       /* audio format conversion */
94         u_char                  *rcvttab;       /* conversion table on read */
95         u_char                  *wcvttab;       /* conversion table on write */
96         call_desc_t             *cdp;           /* call descriptor pointer */
97
98         /* used only in func = FUNCDIAL */
99
100         char                    result;         /* result code for dial dev */  
101
102         /* used in func = FUNCDIAL and func = FUNCTEL*/
103         
104         int                     devstate;       /* state of this unit   */
105 #define ST_IDLE         0x00            /* idle */
106 #define ST_CONNECTED    0x01            /* isdn connected state */
107 #define ST_ISOPEN       0x02            /* userland opened */
108 #define ST_RDWAITDATA   0x04            /* userland read waiting */
109 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
110 #define ST_TONE         0x10            /* tone generator */
111
112         struct selinfo          selp;           /* select / poll */
113
114         struct i4b_tel_tones    tones;
115         int                     toneidx;
116         int                     toneomega;
117         int                     tonefreq;
118
119 } tel_sc_t;
120
121 static tel_sc_t tel_sc[NI4BTEL][NOFUNCS];
122         
123 /* forward decl */
124
125 static void tel_rx_data_rdy(int unit);
126 static void tel_tx_queue_empty(int unit);
127 static void tel_init_linktab(int unit);
128 static void tel_connect(int unit, void *cdp);
129 static void tel_disconnect(int unit, void *cdp);
130 static void tel_tone(tel_sc_t *sc);
131
132 /* audio format conversion tables */
133 static unsigned char a2u_tab[];
134 static unsigned char u2a_tab[];
135 static unsigned char bitreverse[];
136 static u_char sinetab[];
137
138 #define PDEVSTATIC      static
139
140 PDEVSTATIC d_open_t     i4btelopen;
141 PDEVSTATIC d_close_t    i4btelclose;
142 PDEVSTATIC d_read_t     i4btelread;
143 PDEVSTATIC d_write_t    i4btelwrite;
144 PDEVSTATIC d_ioctl_t    i4btelioctl;
145
146 PDEVSTATIC d_poll_t i4btelpoll;
147 #define POLLFIELD i4btelpoll
148
149 #define CDEV_MAJOR 56
150
151 static struct dev_ops i4btel_ops = {
152         { "i4btel", CDEV_MAJOR, 0 },
153         .d_open =       i4btelopen,
154         .d_close =      i4btelclose,
155         .d_read =       i4btelread,
156         .d_write =      i4btelwrite,
157         .d_ioctl =      i4btelioctl,
158         .d_poll =       POLLFIELD,
159 };
160
161 PDEVSTATIC void i4btelinit(void *unused);
162 PDEVSTATIC void i4btelattach(void *);
163
164 PSEUDO_SET(i4btelattach, i4b_tel);
165
166 /*===========================================================================*
167  *                      DEVICE DRIVER ROUTINES
168  *===========================================================================*/
169
170 /*---------------------------------------------------------------------------*
171  *      initialization at kernel load time
172  *---------------------------------------------------------------------------*/
173 PDEVSTATIC void
174 i4btelinit(void *unused)
175 {
176         dev_ops_add(&i4btel_ops, 0, 0);
177 }
178
179 SYSINIT(i4bteldev, SI_SUB_DRIVERS,
180         SI_ORDER_MIDDLE+CDEV_MAJOR, &i4btelinit, NULL);
181
182 /*---------------------------------------------------------------------------*
183  *      interface attach routine
184  *---------------------------------------------------------------------------*/
185 PDEVSTATIC void
186 i4btelattach(void *dummy)
187 {
188         int i, j;
189
190         printf("i4btel: %d ISDN telephony interface device(s) attached\n", NI4BTEL);
191         
192         for(i=0; i < NI4BTEL; i++)
193         {
194                 for(j=0; j < NOFUNCS; j++)
195                 {
196                         tel_sc[i][j].devstate = ST_IDLE;
197                         tel_sc[i][j].audiofmt = CVT_NONE;
198                         tel_sc[i][j].rcvttab = 0;
199                         tel_sc[i][j].wcvttab = 0;
200                         tel_sc[i][j].result = 0;
201
202                         switch(j)
203                         {
204                                 case FUNCTEL:   /* normal i4btel device */
205                                         make_dev(&i4btel_ops, i,
206                                                 UID_ROOT, GID_WHEEL,
207                                                 0600, "i4btel%d", i);
208                                         break;
209                                 
210                                 case FUNCDIAL:  /* i4bteld dialout device */
211                                         make_dev(&i4btel_ops, i+(1<<UNITBITS),
212                                                 UID_ROOT, GID_WHEEL,
213                                                 0600, "i4bteld%d", i);
214                                         break;
215                         }
216                 }
217                 tel_init_linktab(i);            
218         }
219 }
220
221 /*---------------------------------------------------------------------------*
222  *      open tel device
223  *---------------------------------------------------------------------------*/
224 PDEVSTATIC int
225 i4btelopen(struct dev_open_args *ap)
226 {
227         cdev_t dev = ap->a_head.a_dev;
228         int unit = UNIT(dev);
229         int func = FUNC(dev);
230         
231         tel_sc_t *sc;
232         
233         if(unit >= NI4BTEL)
234                 return(ENXIO);
235
236         sc = &tel_sc[unit][func];               
237
238         if(sc->devstate & ST_ISOPEN)
239                 return(EBUSY);
240
241         sc->devstate |= ST_ISOPEN;              
242
243         if(func == FUNCDIAL)
244         {
245                 sc->result = 0;
246         }
247         
248         return(0);
249 }
250
251 /*---------------------------------------------------------------------------*
252  *      close tel device
253  *---------------------------------------------------------------------------*/
254 PDEVSTATIC int
255 i4btelclose(struct dev_close_args *ap)
256 {
257         cdev_t dev = ap->a_head.a_dev;
258         int unit = UNIT(dev);
259         int func = FUNC(dev);
260         tel_sc_t *sc;
261         int error = 0;
262         
263         if(unit > NI4BTEL)
264                 return(ENXIO);
265
266         sc = &tel_sc[unit][func];               
267
268         crit_enter();
269         sc->devstate &= ~ST_TONE;               
270
271         if((func == FUNCTEL) &&
272            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
273         {
274                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
275                 {
276                         sc->devstate |= ST_WRWAITEMPTY;
277         
278                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
279                                         PCATCH, "wtcl", 0)) != 0)
280                         {
281                                 break;
282                         }
283                 }
284                 sc->devstate &= ~ST_WRWAITEMPTY;                
285         }
286
287         sc->devstate &= ~ST_ISOPEN;             
288         crit_exit();
289         wakeup((caddr_t) &sc->tones);
290
291         return(error);
292 }
293
294 /*---------------------------------------------------------------------------*
295  *      i4btelioctl - device driver ioctl routine
296  *---------------------------------------------------------------------------*/
297 PDEVSTATIC int
298 i4btelioctl(struct dev_ioctl_args *ap)
299 {
300         cdev_t dev = ap->a_head.a_dev;
301         int unit = UNIT(dev);
302         int func = FUNC(dev);
303         int error = 0;
304         struct mbuf *m;
305
306         tel_sc_t *sc = &tel_sc[unit][func];
307
308         if(func == FUNCTEL)
309         {
310                 switch(ap->a_cmd)
311                 {
312                         case I4B_TEL_GETAUDIOFMT:
313                                 *(int *)ap->a_data = sc->audiofmt;
314                                 break;
315                         
316                         case I4B_TEL_SETAUDIOFMT:
317                                 switch (*(int *)ap->a_data)
318                                 {
319                                         case CVT_NONE:
320                                                 sc->rcvttab = 0;
321                                                 sc->wcvttab = 0;
322                                                 break;
323                                         case CVT_ALAW2ULAW:
324                                                 /* ISDN: a-law */
325                                                 /* user: u-law */ 
326                                                 sc->rcvttab = a2u_tab;
327                                                 sc->wcvttab = u2a_tab;
328                                                 break;
329                                         case CVT_ULAW2ALAW:
330                                                 /* ISDN: u-law */
331                                                 /* user: a-law */ 
332                                                 sc->rcvttab = u2a_tab;
333                                                 sc->wcvttab = a2u_tab;
334                                                 break;
335                                         default:
336                                                 error = ENODEV;
337                                                 break;
338                                 }
339                                 if(error == 0)
340                                         sc->audiofmt = *(int *)ap->a_data;
341                                 break;
342         
343                         case I4B_TEL_EMPTYINPUTQUEUE:
344                                 crit_enter();
345                                 while((sc->devstate & ST_CONNECTED)     &&
346                                         (sc->devstate & ST_ISOPEN)      &&
347                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
348                                 {
349                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
350                                         if(m)
351                                                 i4b_Bfreembuf(m);
352                                 }
353                                 crit_exit();
354                                 break;
355
356                         case I4B_TEL_VR_REQ:
357                         {
358                                 msg_vr_req_t *mvr;
359
360                                 mvr = (msg_vr_req_t *)ap->a_data;
361
362                                 mvr->version = VERSION;
363                                 mvr->release = REL;
364                                 mvr->step = STEP;                       
365                                 break;
366                         }
367                         case I4B_TEL_TONES:
368                         {
369                                 struct i4b_tel_tones *tt;
370
371                                 tt = (struct i4b_tel_tones *)ap->a_data;
372                                 crit_enter();
373                                 while ((sc->devstate & ST_TONE) && 
374                                     sc->tones.duration[sc->toneidx] != 0) {
375                                         if((error = tsleep((caddr_t) &sc->tones,
376                                             PCATCH, "rtone", 0 )) != 0) {
377                                                 crit_exit();
378                                                 return(error);
379                                         }
380                                 } 
381                                 if(!(sc->devstate & ST_ISOPEN)) {
382                                         crit_exit();
383                                         return (EIO);
384                                 }
385                                 if(!(sc->devstate & ST_CONNECTED)) {
386                                         crit_exit();
387                                         return (EIO);
388                                 }
389
390                                 sc->tones = *tt;
391                                 sc->toneidx = 0;
392                                 sc->tonefreq = tt->frequency[0];
393                                 sc->devstate |= ST_TONE;
394                                 crit_exit();
395                                 tel_tone(sc);
396                                 break;
397                         }
398         
399                         default:
400                                 error = ENOTTY;
401                                 break;
402                 }
403         }
404         else if(func == FUNCDIAL)
405         {
406                 switch(ap->a_cmd)
407                 {
408                         default:
409                                 error = ENOTTY;
410                                 break;
411                 }
412         }               
413         return(error);
414 }
415
416 /*---------------------------------------------------------------------------*
417  *      read from tel device
418  *---------------------------------------------------------------------------*/
419 PDEVSTATIC int
420 i4btelread(struct dev_read_args *ap)
421 {
422         cdev_t dev = ap->a_head.a_dev;
423         struct uio *uio = ap->a_uio;
424         int unit = UNIT(dev);
425         int func = FUNC(dev);
426
427         struct mbuf *m;
428         int error = 0;
429
430         tel_sc_t *sc = &tel_sc[unit][func];
431         
432         if(!(sc->devstate & ST_ISOPEN))
433                 return(EIO);
434
435         if(func == FUNCTEL)
436         {
437                 crit_enter();
438
439                 while((sc->devstate & ST_ISOPEN)        &&
440                       (sc->devstate & ST_CONNECTED)     &&
441                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
442                 {
443                         sc->devstate |= ST_RDWAITDATA;
444
445                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
446
447                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
448                                                 PCATCH, "rtel", 0 )) != 0)
449                         {
450                                 sc->devstate &= ~ST_RDWAITDATA;
451                                 crit_exit();
452                                 return(error);
453                         }
454                 }
455         
456                 if(!(sc->devstate & ST_ISOPEN))
457                 {
458                         crit_exit();
459                         return(EIO);
460                 }
461         
462                 if(!(sc->devstate & ST_CONNECTED))
463                 {
464                         crit_exit();
465                         return(EIO);
466                 }
467                 
468         
469                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
470                 
471                 if(m && m->m_len > 0)
472                 {
473                         int i;
474
475                         for(i = 0; i < m->m_len; i++)
476                         {
477                                 /* always reverse bit order from line */
478                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
479
480                                 /* convert if necessary */
481                                 if(sc->rcvttab)
482                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
483                         }
484                         error = uiomove(m->m_data, m->m_len, uio);
485
486                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
487                 }
488                 else
489                 {
490                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
491                         error = EIO;
492                 }
493                         
494                 if(m)
495                         i4b_Bfreembuf(m);
496         
497                 crit_exit();
498         }
499         else if(func == FUNCDIAL)
500         {
501                 crit_enter();
502                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
503                 {
504                         sc->devstate |= ST_RDWAITDATA;
505         
506                         if((error = tsleep((caddr_t) &sc->result,
507                                                 PCATCH, "rtel1", 0 )) != 0)
508                         {
509                                 sc->devstate &= ~ST_RDWAITDATA;
510                                 crit_exit();
511                                 return(error);
512                         }
513                 }
514         
515                 if(!(sc->devstate & ST_ISOPEN))
516                 {
517                         crit_exit();
518                         return(EIO);
519                 }
520         
521                 if(sc->result != 0)
522                 {
523                         error = uiomove(&sc->result, 1, uio);
524                         sc->result = 0;
525                 }
526                 else
527                 {
528                         error = EIO;
529                 }
530
531                 crit_exit();
532         }
533         return(error);
534 }
535
536 /*---------------------------------------------------------------------------*
537  *      write to tel device
538  *---------------------------------------------------------------------------*/
539 PDEVSTATIC int
540 i4btelwrite(struct dev_write_args *ap)
541 {
542         cdev_t dev = ap->a_head.a_dev;
543         struct uio *uio = ap->a_uio;
544         int unit = UNIT(dev);
545         int func = FUNC(dev);
546         struct mbuf *m;
547         int error = 0;
548         tel_sc_t *sc = &tel_sc[unit][func];
549         
550         if(!(sc->devstate & ST_ISOPEN))
551         {
552                 return(EIO);
553         }
554
555         if(func == FUNCTEL)
556         {
557                 crit_enter();
558                 
559                 if(!(sc->devstate & ST_CONNECTED)) {
560                         crit_exit();
561                         return(EIO);
562                 }
563                         
564                 sc->devstate &= ~ST_TONE;               
565                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
566                       (sc->devstate & ST_ISOPEN))
567                 {
568                         sc->devstate |= ST_WRWAITEMPTY;
569
570                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
571                                         PCATCH, "wtel", 0)) != 0)
572                         {
573                                 sc->devstate &= ~ST_WRWAITEMPTY;
574                                 crit_exit();
575                                 return(error);
576                         }
577                 }
578         
579                 if(!(sc->devstate & ST_ISOPEN))
580                 {
581                         crit_exit();
582                         return(EIO);
583                 }
584         
585                 if(!(sc->devstate & ST_CONNECTED))
586                 {
587                         crit_exit();
588                         return(EIO);
589                 }
590
591                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
592                 {
593                         int i;
594                         
595                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
596         
597                         error = uiomove(m->m_data, m->m_len, uio);
598         
599                         for(i = 0; i < m->m_len; i++)
600                         {
601                                 /* convert if necessary */
602                                 if(sc->wcvttab)
603                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
604
605                                 /* always reverse bitorder to line */
606                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
607                         }
608
609                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
610                                 m_freem(m);
611                         else
612                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
613                         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
614                 }
615         
616                 crit_exit();
617         }
618         else if(func == FUNCDIAL)
619         {
620 #define CMDBUFSIZ 80 
621                 char cmdbuf[CMDBUFSIZ];
622                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
623         
624                 error = uiomove(cmdbuf, len, uio);
625
626                 if(cmdbuf[0] == CMD_DIAL)
627                 {
628                         i4b_l4_dialoutnumber(BDRV_TEL, unit, len-1, &cmdbuf[1]);
629                 }
630                 else if(cmdbuf[0] == CMD_HUP)
631                 {
632                         i4b_l4_drvrdisc(BDRV_TEL, unit);
633                 }
634                 else if(cmdbuf[0] == CMD_KEYP)
635                 {
636                         i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]);
637                 }
638         }
639         else
640         {
641                 error = EIO;
642         }               
643         
644         return(error);
645 }
646
647 /*---------------------------------------------------------------------------*
648  *      
649  *---------------------------------------------------------------------------*/
650 #define NTONESAMP 32
651 static void
652 tel_tone(tel_sc_t *sc)
653 {
654         struct mbuf *m;
655         u_char *p;
656         int i;
657
658         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
659                 printf("no mbuf in tel_tone\n");
660                 return;
661         }
662         p = m->m_data;
663         m->m_len = 0;
664         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
665
666                 if (sc->tones.duration[sc->toneidx] > 0) {
667                         if (--sc->tones.duration[sc->toneidx] == 0) {
668                                 sc->toneidx++;
669                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
670                                         sc->devstate &= ~ST_TONE;
671                                         sc->toneomega = 0;
672                                         sc->tonefreq = 0;
673                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
674                                            sc->tones.duration[sc->toneidx] == 0) {
675                                         sc->devstate &= ~ST_TONE;
676                                         sc->toneomega = 0;
677                                         sc->tonefreq = 0;
678                                 } else {
679                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
680                                 }
681                                 if (sc->tones.duration[sc->toneidx] == 0) {
682                                         wakeup((caddr_t) &sc->tones);
683                                 }
684                         }
685                 }
686
687                 sc->toneomega += sc->tonefreq;
688                 if (sc->toneomega >= 8000)
689                         sc->toneomega -= 8000;
690                 *p++ = bitreverse[sinetab[sc->toneomega]];
691                 m->m_len++;
692         }
693         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
694         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
695 }
696
697 /*---------------------------------------------------------------------------*
698  *      device driver poll
699  *---------------------------------------------------------------------------*/
700 PDEVSTATIC int
701 i4btelpoll(struct dev_poll_args *ap)
702 {
703         cdev_t dev = ap->a_head.a_dev;
704         int revents = 0;        /* Events we found */
705         int unit = UNIT(dev);
706         int func = FUNC(dev);   
707
708         tel_sc_t *sc = &tel_sc[unit][func];
709         
710         crit_enter();
711
712         if(!(sc->devstate & ST_ISOPEN))
713         {
714                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
715                 crit_exit();
716                 ap->a_events = 0;
717                 return(0);
718         }
719
720         if(func == FUNCTEL)
721         {
722                 /*
723                  * Writes are OK if we are connected and the
724                  * transmit queue can take them
725                  */
726                  
727                 if((ap->a_events & (POLLOUT|POLLWRNORM))        &&
728                         (sc->devstate & ST_CONNECTED)   &&
729                         (sc->isdn_linktab != NULL)      &&
730                         (!IF_QFULL(sc->isdn_linktab->tx_queue)))
731                 {
732                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
733                         revents |= (ap->a_events & (POLLOUT|POLLWRNORM));
734                 }
735                 
736                 /* ... while reads are OK if we have any data */
737         
738                 if((ap->a_events & (POLLIN|POLLRDNORM)) &&
739                         (sc->devstate & ST_CONNECTED)   &&
740                         (sc->isdn_linktab != NULL)      &&
741                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
742                 {
743                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
744                         revents |= (ap->a_events & (POLLIN|POLLRDNORM));
745                 }
746                         
747                 if(revents == 0)
748                 {
749                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
750                         selrecord(curthread, &sc->selp);
751                 }
752         }
753         else if(func == FUNCDIAL)
754         {
755                 if(ap->a_events & (POLLOUT|POLLWRNORM))
756                 {
757                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
758                         revents |= (ap->a_events & (POLLOUT|POLLWRNORM));
759                 }
760
761                 if(ap->a_events & (POLLIN|POLLRDNORM))
762                 {
763                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
764                         if(sc->result != 0)
765                                 revents |= (ap->a_events & (POLLIN|POLLRDNORM));
766                 }
767                         
768                 if(revents == 0)
769                 {
770                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
771                         selrecord(curthread, &sc->selp);
772                 }
773         }
774         crit_exit();
775         ap->a_events = revents;
776         return (0);
777 }
778
779 /*===========================================================================*
780  *                      ISDN INTERFACE ROUTINES
781  *===========================================================================*/
782
783 /*---------------------------------------------------------------------------*
784 *       this routine is called from L4 handler at connect time
785  *---------------------------------------------------------------------------*/
786 static void
787 tel_connect(int unit, void *cdp)
788 {
789         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
790
791         /* audio device */
792         
793         sc->cdp = (call_desc_t *)cdp;
794
795         sc->devstate |= ST_CONNECTED;
796
797         /* dialer device */
798         
799         sc = &tel_sc[unit][FUNCDIAL];
800
801         if(sc->devstate == ST_ISOPEN)
802         {
803                 sc->result = RSP_CONN;
804
805                 if(sc->devstate & ST_RDWAITDATA)
806                 {
807                         sc->devstate &= ~ST_RDWAITDATA;
808                         wakeup((caddr_t) &sc->result);
809                 }
810                 selwakeup(&sc->selp);
811         }
812 }
813
814 /*---------------------------------------------------------------------------*
815  *      this routine is called from L4 handler at disconnect time
816  *---------------------------------------------------------------------------*/
817 static void
818 tel_disconnect(int unit, void *cdp)
819 {
820 /*      call_desc_t *cd = (call_desc_t *)cdp; */
821
822         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
823         
824         /* audio device */
825         
826         sc->devstate &= ~ST_CONNECTED;
827
828         if(sc->devstate & ST_RDWAITDATA)
829         {
830                 sc->devstate &= ~ST_RDWAITDATA;
831                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
832         }
833
834         if(sc->devstate & ST_WRWAITEMPTY)
835         {
836                 sc->devstate &= ~ST_WRWAITEMPTY;
837                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
838         }
839
840         /* dialer device */
841         
842         sc = &tel_sc[unit][FUNCDIAL];
843
844         if(sc->devstate & ST_ISOPEN)
845         {
846                 sc->result = RSP_HUP;
847
848                 if(sc->devstate & ST_RDWAITDATA)
849                 {
850                         sc->devstate &= ~ST_RDWAITDATA;
851                         wakeup((caddr_t) &sc->result);
852                 }
853                 selwakeup(&sc->selp);
854
855                 if (sc->devstate & ST_TONE) {
856                         sc->devstate &= ~ST_TONE;
857                         wakeup((caddr_t) &sc->tones);
858                 }
859         }
860 }
861
862 /*---------------------------------------------------------------------------*
863  *      feedback from daemon in case of dial problems
864  *---------------------------------------------------------------------------*/
865 static void
866 tel_dialresponse(int unit, int status, cause_t cause)
867 {       
868         tel_sc_t *sc = &tel_sc[unit][FUNCDIAL];
869
870         NDBGL4(L4_TELDBG, "i4btel%d,  status=%d, cause=0x%4x", unit, status, cause);
871
872         if((sc->devstate == ST_ISOPEN) && status)
873         {       
874                 sc->result = RSP_NOA;
875
876                 if(sc->devstate & ST_RDWAITDATA)
877                 {
878                         sc->devstate &= ~ST_RDWAITDATA;
879                         wakeup((caddr_t) &sc->result);
880                 }
881                 selwakeup(&sc->selp);
882         }
883 }
884         
885 /*---------------------------------------------------------------------------*
886  *      interface up/down
887  *---------------------------------------------------------------------------*/
888 static void
889 tel_updown(int unit, int updown)
890 {
891 }
892         
893 /*---------------------------------------------------------------------------*
894  *      this routine is called from the HSCX interrupt handler
895  *      when a new frame (mbuf) has been received and was put on
896  *      the rx queue.
897  *---------------------------------------------------------------------------*/
898 static void
899 tel_rx_data_rdy(int unit)
900 {
901         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
902         
903         if(sc->devstate & ST_RDWAITDATA)
904         {
905                 sc->devstate &= ~ST_RDWAITDATA;
906                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
907         }
908         selwakeup(&sc->selp);
909 }
910
911 /*---------------------------------------------------------------------------*
912  *      this routine is called from the HSCX interrupt handler
913  *      when the last frame has been sent out and there is no
914  *      further frame (mbuf) in the tx queue.
915  *---------------------------------------------------------------------------*/
916 static void
917 tel_tx_queue_empty(int unit)
918 {
919         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
920
921         if(sc->devstate & ST_WRWAITEMPTY)
922         {
923                 sc->devstate &= ~ST_WRWAITEMPTY;
924                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
925         }
926         if(sc->devstate & ST_TONE) {
927                 tel_tone(sc);
928         } else {
929                 selwakeup(&sc->selp);
930         }
931 }
932
933 /*---------------------------------------------------------------------------*
934  *      this routine is called from the HSCX interrupt handler
935  *      each time a packet is received or transmitted.
936  *---------------------------------------------------------------------------*/
937 static void
938 tel_activity(int unit, int rxtx)
939 {
940         if(tel_sc[unit][FUNCTEL].cdp)
941                 tel_sc[unit][FUNCTEL].cdp->last_active_time = SECOND;
942 }
943
944 /*---------------------------------------------------------------------------*
945  *      return this drivers linktab address
946  *---------------------------------------------------------------------------*/
947 drvr_link_t *
948 tel_ret_linktab(int unit)
949 {
950         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
951         
952         tel_init_linktab(unit);
953         return(&sc->drvr_linktab);
954 }
955
956 /*---------------------------------------------------------------------------*
957  *      setup the isdn_linktab for this driver
958  *---------------------------------------------------------------------------*/
959 void
960 tel_set_linktab(int unit, isdn_link_t *ilt)
961 {
962         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
963         sc->isdn_linktab = ilt;
964 }
965
966 /*---------------------------------------------------------------------------*
967  *      initialize this drivers linktab
968  *---------------------------------------------------------------------------*/
969 static void
970 tel_init_linktab(int unit)
971 {
972         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
973         
974         sc->drvr_linktab.unit = unit;
975         sc->drvr_linktab.bch_rx_data_ready = tel_rx_data_rdy;
976         sc->drvr_linktab.bch_tx_queue_empty = tel_tx_queue_empty;
977         sc->drvr_linktab.bch_activity = tel_activity;   
978         sc->drvr_linktab.line_connected = tel_connect;
979         sc->drvr_linktab.line_disconnected = tel_disconnect;
980         sc->drvr_linktab.dial_response = tel_dialresponse;
981         sc->drvr_linktab.updown_ind = tel_updown;       
982 }
983
984 /*===========================================================================*
985  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
986  *===========================================================================*/
987
988 /*---------------------------------------------------------------------------*
989  *      A-law to u-law conversion
990  *---------------------------------------------------------------------------*/
991 static unsigned char a2u_tab[256] = {
992 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
993 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
994 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
995 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
996 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
997 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
998 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
999 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
1000 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
1001 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
1002 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
1003 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
1004 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
1005 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
1006 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
1007 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
1008 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1009 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1010 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
1011 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
1012 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1013 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1014 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
1015 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
1016 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
1017 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
1018 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
1019 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
1020 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
1021 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
1022 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
1023 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
1024 };
1025
1026 /*---------------------------------------------------------------------------*
1027  *      u-law to A-law conversion
1028  *---------------------------------------------------------------------------*/
1029 static unsigned char u2a_tab[256] = {
1030 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1031 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1032 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
1033 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
1034 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1035 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1036 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
1037 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
1038 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
1039 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
1040 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
1041 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
1042 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
1043 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
1044 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
1045 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
1046 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1047 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1048 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
1049 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
1050 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1051 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1052 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
1053 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
1054 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
1055 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
1056 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
1057 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
1058 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
1059 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
1060 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
1061 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
1062 };
1063   
1064 /*---------------------------------------------------------------------------*
1065  *      reverse bits in a byte
1066  *---------------------------------------------------------------------------*/
1067 static unsigned char bitreverse[256] = {
1068 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
1069 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
1070 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
1071 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
1072 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
1073 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
1074 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
1075 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
1076 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
1077 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
1078 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
1079 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
1080 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
1081 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
1082 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
1083 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
1084 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
1085 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
1086 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
1087 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
1088 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
1089 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
1090 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
1091 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
1092 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
1093 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
1094 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
1095 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
1096 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
1097 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
1098 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
1099 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
1100 };
1101
1102 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
1103 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
1104 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
1105 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
1106 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
1107 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
1108 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
1109 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
1110 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
1111 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
1112 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
1113 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
1114 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
1115 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
1116 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
1117 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
1118 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
1119 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
1120 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
1121 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
1122 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
1123 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
1124 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
1125 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
1126 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
1127 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1128 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
1129 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
1130 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
1131 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
1132 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
1133 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
1134 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1135 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
1136 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1137 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
1138 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1139 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
1140 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1141 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
1142 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1143 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
1144 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1145 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
1146 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1147 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1148 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1149 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1150 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1151 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1152 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
1153 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1154 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
1155 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1156 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
1157 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1158 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1159 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1160 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1161 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
1162 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1163 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
1164 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1165 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1166 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1167 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1168 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
1169 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1170 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1171 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1172 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1173 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
1174 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1175 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1176 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1177 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1178 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
1179 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1180 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1181 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1182 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1183 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1184 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1185 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1186 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1187 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1188 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1189 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1190 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1191 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1192 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1193 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1194 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1195 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1196 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
1197 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1198 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1199 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1200 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1201 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1202 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1203 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
1204 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1205 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1206 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1207 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1208 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1209 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1210 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1211 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
1212 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1213 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1214 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1215 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1216 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1217 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1218 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1219 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1220 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1221 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
1222 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1223 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1224 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1225 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1226 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1227 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1228 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1229 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1230 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1231 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1232 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1233 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1234 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1235 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1236 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1237 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1238 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1239 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1240 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1241 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1242 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1243 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1244 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1245 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1246 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1247 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1248 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1249 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1250 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1251 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1252 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1253 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1254 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1255 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1256 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1257 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1258 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1259 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1260 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1261 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1262 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1263 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1264 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1265 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1266 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1267 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1268 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1269 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1270 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1271 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1272 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1273 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1274 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1275 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1276 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1277 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
1278 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1279 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1280 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1281 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1282 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1283 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1284 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1285 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1286 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1287 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1288 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1289 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1290 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1291 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1292 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1293 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1294 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1295 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1296 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1297 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1298 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1299 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1300 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
1301 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1302 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1303 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1304 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1305 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1306 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1307 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1308 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
1309 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1310 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1311 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1312 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1313 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1314 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1315 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
1316 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1317 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1318 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1319 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1320 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1321 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1322 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1323 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1324 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1325 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1326 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1327 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1328 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1329 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1330 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1331 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1332 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1333 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
1334 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1335 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1336 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1337 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1338 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1339 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1340 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1341 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1342 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1343 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1344 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1345 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1346 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
1347 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1348 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
1349 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1350 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1351 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1352 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1353 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
1354 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1355 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
1356 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1357 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
1358 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1359 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1360 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1361 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1362 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1363 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1364 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
1365 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1366 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
1367 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1368 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
1369 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1370 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
1371 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1372 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
1373 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1374 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
1375 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1376 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1377 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1378 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1379 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1380 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1381 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1382 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1383 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1384 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1385 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
1386 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
1387 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
1388 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
1389 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
1390 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
1391 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
1392 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
1393 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
1394 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
1395 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
1396 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
1397 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
1398 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
1399 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
1400 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
1401 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
1402 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
1403 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
1404 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
1405 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
1406 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
1407 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
1408 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
1409 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
1410 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
1411 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
1412 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
1413 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
1414 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
1415 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
1416 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
1417 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
1418 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
1419 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
1420 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
1421 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
1422 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
1423 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
1424 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
1425 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
1426 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
1427 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
1428 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
1429 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
1430 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
1431 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
1432 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
1433 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
1434 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
1435 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
1436 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
1437 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
1438 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
1439 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1440 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
1441 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1442 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
1443 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1444 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
1445 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1446 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
1447 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1448 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1449 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1450 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1451 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
1452 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1453 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
1454 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1455 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
1456 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1457 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
1458 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1459 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1460 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1461 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1462 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
1463 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1464 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
1465 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1466 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1467 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1468 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1469 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
1470 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1471 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
1472 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1473 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1474 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1475 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1476 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1477 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1478 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1479 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1480 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1481 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1482 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1483 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1484 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
1485 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1486 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1487 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1488 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1489 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
1490 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1491 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1492 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1493 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1494 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
1495 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1496 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1497 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1498 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1499 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1500 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
1501 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1502 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1503 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1504 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1505 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1506 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1507 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1508 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1509 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1510 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1511 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1512 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1513 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1514 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1515 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1516 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1517 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1518 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1519 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1520 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1521 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1522 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1523 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1524 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1525 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1526 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
1527 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1528 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1529 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1530 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1531 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1532 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1533 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1534 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1535 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1536 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1537 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1538 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1539 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1540 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1541 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1542 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1543 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1544 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1545 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1546 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1547 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1548 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1549 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1550 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1551 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1552 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1553 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1554 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1555 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1556 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1557 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1558 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1559 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1560 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1561 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1562 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1563 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1564 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1565 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1566 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1567 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1568 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1569 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1570 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
1571 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1572 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1573 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1574 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1575 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1576 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1577 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1578 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
1579 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1580 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1581 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1582 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1583 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1584 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1585 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1586 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1587 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1588 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1589 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1590 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1591 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1592 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1593 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1594 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1595 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1596 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1597 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1598 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1599 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1600 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1601 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1602 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1603 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1604 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1605 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
1606 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1607 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1608 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1609 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
1610 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1611 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1612 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1613 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1614 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1615 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1616 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
1617 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1618 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
1619 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1620 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1621 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1622 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1623 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
1624 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1625 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
1626 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1627 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1628 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1629 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1630 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1631 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1632 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1633 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1634 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1635 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
1636 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1637 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
1638 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1639 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1640 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1641 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1642 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1643 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
1644 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1645 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
1646 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1647 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
1648 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
1649 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
1650 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
1651 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
1652 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
1653 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
1654 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
1655 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
1656 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
1657 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
1658 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1659 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1660 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1661 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1662 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1663 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
1664 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
1665 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
1666 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
1667 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
1668 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
1669 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
1670 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
1671 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
1672 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
1673 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
1674 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
1675 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
1676
1677 /*===========================================================================*/
1678
1679 #endif /* NI4BTEL > 0 */