The Hunchback of Notre Dame
by Victor Hugo
Book Eleventh, Chapter 2
Additional Information
- Year Published: 1831
- Language: English
- Country of Origin: France
- Source: Hapsgood, I., trans. (1831). The Hunchback of Notre Dame. New York: Carey, Lea, and Blanchard.
-
Readability:
- Flesch–Kincaid Level: 12.0
- Word Count: 3,371
- Genre: Romance
- Keywords: culture, fate, love, loyalty
- ✎ Cite This
Downloads
When Quasimodo saw that the cell was empty, that the gypsy was no longer there, that while he had been defending her she had been abducted, he grasped his hair with both hands and stamped with surprise and pain; then he set out to run through the entire church seeking his Bohemian, howling strange cries to all the corners of the walls, strewing his red hair on the pavement. It was just at the moment when the king's archers were making their victorious entrance into Notre–Dame, also in search of the gypsy. Quasimodo, poor, deaf fellow, aided them in their fatal intentions, without suspecting it; he thought that the outcasts were the gypsy's enemies. He himself conducted Tristan l'Hermite to all possible hiding–places, opened to him the secret doors, the double bottoms of the altars, the rear sacristries. If the unfortunate girl had still been there, it would have been he himself who would have delivered her up.
When the fatigue of finding nothing had disheartened Tristan, who was not easily discouraged, Quasimodo continued the search alone. He made the tour of the church twenty times, length and breadth, up and down, ascending and descending, running, calling, sbouting, peeping, rummaging, ransacking, thrusting his head into every hole, pushing a torch under every vault, despairing, mad. A male who has lost his female is no more roaring nor more haggard.
At last when he was sure, perfectly sure that she was no longer there, that all was at an end, that she had been snatched from him, he slowly mounted the staircase to the towers, that staircase which he had ascended with so much eagerness and triumph on the day when he had saved her. He passed those same places once more with drooping head, voiceless, tearless, almost breathless. The church was again deserted, and had fallen back into its silence. The archers had quitted it to track the sorceress in the city. Quasimodo, left alone in that vast Notre–Dame, so besieged and tumultuous but a short time before, once more betook himself to the cell where the gypsy had slept for so many weeks under his guardianship.
As he approached it, he fancied that he might, perhaps, find her there. When, at the turn of the gallery which opens on the roof of the side aisles, he perceived the tiny cell with its little window and its little door crouching beneath a great flying buttress like a bird's nest under a branch, the poor man's heart failed him, and he leaned against a pillar to keep from falling. He imagined that she might have returned thither, that some good genius had, no doubt, brought her back, that this chamber was too tranquil, too safe, too charming for her not to be there, and he dared not take another step for fear of destroying his illusion. "Yes," he said to himself, "perchance she is sleeping, or praying. I must not disturb her."
At length he summoned up courage, advanced on tiptoe, looked, entered. Empty. The cell was still empty. The unhappy deaf man walked slowly round it, lifted the bed and looked beneath it, as though she might be concealed between the pavement and the mattress, then he shook his head and remained stupefied. All at once, he crushed his torch under his foot, and, without uttering a word, without giving vent to a sigh, he flung himself at full speed, head foremost against the wall, and fell fainting on the floor.
When he recovered his senses, he threw himself on the bed and rolling about, he kissed frantically the place where the young girl had slept and which was still warm; he remained there for several moments as motionless as though he were about to expire; then he rose, dripping with perspiration, panting, mad, and began to beat his head against the wall with the frightful regularity of the clapper of his bells, and the resolution of a man determined to kill himself. At length he fell a second time, exhausted; he dragged himself on his knees outside the cell, and crouched down facing the door, in an attitude of astonishment.
He remained thus for more than an hour without making a movement, with his eye fixed on the deserted cell, more gloomy, and more pensive than a mother seated between an empty cradle and a full coffin. He uttered not a word; only at long intervals, a sob heaved his body violently, but it was a tearless sob, like summer lightning which makes no noise.
It appears to have been then, that, seeking at the bottom of his lonely thoughts for the unexpected abductor of the gypsy, he thought of the archdeacon. He remembered that Dom Claude alone possessed a key to the staircase leading to the cell; he recalled his nocturnal attempts on the young girl, in the first of which he, Quasimodo, had assisted, the second of which he had prevented. He recalled a thousand details, and soon he no longer doubted that the archdeacon had taken the gypsy. Nevertheless, such was his respect for the priest, such his gratitude, his devotion, his love for this man had taken such deep root in his heart, that they resisted, even at this moment, the talons of jealousy and despair.
He reflected that the archdeacon had done this thing, and the wrath of blood and death which it would have evoked in him against any other person, turned in the poor deaf man, from the moment when Claude Frollo was in question, into an increase of grief and sorrow.
At the moment when his thought was thus fixed upon the priest, while the daybreak was whitening the flying buttresses, he perceived on the highest story of Notre–Dame, at the angle formed by the external balustrade as it makes the turn of the chancel, a figure walking. This figure was coming towards him. He recognized it. It was the archdeacon.
Claude was walking with a slow, grave step. He did not look before him as he walked, he was directing his course towards the northern tower, but his face was turned aside towards the right bank of the Seine, and he held his head high, as though trying to see something over the roofs. The owl often assumes this oblique attitude. It flies towards one point and looks towards another. In this manner the priest passed above Quasimodo without seeing him.
The deaf man, who had been petrified by this sudden apparition, beheld him disappear through the door of the staircase to the north tower. The reader is aware that this is the tower from which the Hôtel–de–Ville is visible. Quasimodo rose and followed the archdeacon.
Quasimodo ascended the tower staircase for the sake of ascending it, for the sake of seeing why the priest was ascending it. Moreover, the poor bellringer did not know what he (Quasimodo) should do, what he should say, what he wished.  The archdeacon and the gypsy had come into conflict in his heart.
When he reached the summit of the tower, before emerging from the shadow of the staircase and stepping upon the platform, he cautiously examined the position of the priest. The priest's back was turned to him. There is an openwork balustrade which surrounds the platform of the bell tower. The priest, whose eyes looked down upon the town, was resting his breast on that one of the four sides of the balustrades which looks upon the Pont Notre–Dame.
Quasimodo, advancing with the tread of a wolf behind him, went to see what he was gazing at thus.
The priest's attention was so absorbed elsewhere that he did not hear the deaf man walking behind him.
Paris is a magnificent and charming spectacle, and especially at that day, viewed from the top of the towers of Notre– Dame, in the fresh light of a summer dawn. The day might have been in July. The sky was perfectly serene. Some tardy stars were fading away at various points, and there was a very brilliant one in the east, in the brightest part of the heavens. The sun was about to appear; Paris was beginning to move. A very white and very pure light brought out vividly to the eye all the outlines that its thousands of houses present to the east. The giant shadow of the towers leaped from roof to roof, from one end of the great city to the other. There were several quarters from which were already heard voices and noisy sounds. Here the stroke of a bell, there the stroke of a hammer, beyond, the complicated clatter of a cart in motion.
Already several columns of smoke were being belched forth from the chimneys scattered over the whole surface of roofs, as through the fissures of an immense sulphurous crater. The river, which ruffles its waters against the arches of so many bridges, against the points of so many islands, was wavering with silvery folds. Around the city, outside the ramparts, sight was lost in a great circle of fleecy vapors through which one confusedly distinguished the indefinite line of the plains, and the graceful swell of the heights. All sorts of floating sounds were dispersed over this half–awakened city. Towards the east, the morning breeze chased a few soft white bits of wool torn from the misty fleece of the hills.
In the Parvis, some good women, who had their milk jugs in their hands, were pointing out to each other, with astonishment, the singular dilapidation of the great door of Notre–Dame, and the two solidified streams of lead in the crevices of the stone. This was all that remained of the tempest of the night. The bonfire lighted between the towers by Quasimodo had died out. Tristan had already cleared up the Place, and had the dead thrown into the Seine. Kings like Louis XI. are careful to clean the pavement quickly after a massacre.
Outside the balustrade of the tower, directly under the point where the priest had paused, there was one of those fantastically carved stone gutters with which Gothic edifices bristle, and, in a crevice of that gutter, two pretty wallflowers in blossom, shaken out and vivified, as it were, by the breath of air, made frolicsome salutations to each other. Above the towers, on high, far away in the depths of the sky, the cries of little birds were heard.
But the priest was not listening to, was not looking at, anything of all this. He was one of the men for whom there are no mornings, no birds, no flowers. In that immense horizon, which assumed so many aspects about him, his contemplation was concentrated on a single point.
Quasimodo was burning to ask him what he had done with the gypsy; but the archdeacon seemed to be out of the world at that moment. He was evidently in one of those violent moments of life when one would not feel the earth crumble. He remained motionless and silent, with his eyes steadily fixed on a certain point; and there was something so terrible about this silence and immobility that the savage bellringer shuddered before it and dared not come in contact with it. Only, and this was also one way of interrogating the archdeacon, he followed the direction of his vision, and in this way the glance of the unhappy deaf man fell upon the Place de Gr ve.
Thus he saw what the priest was looking at. The ladder was erected near the permanent gallows. There were some people and many soldiers in the Place. A man was dragging a white thing, from which hung something black, along the pavement. This man halted at the foot of the gallows.
Here something took place which Quasimodo could not see very clearly. It was not because his only eye had not preserved its long range, but there was a group of soldiers which prevented his seeing everything. Moreover, at that moment the sun appeared, and such a flood of light overflowed the horizon that one would have said that all the points in Paris, spires, chimneys, gables, had simultaneously taken fire.
Meanwhile, the man began to mount the ladder. Then Quasimodo saw him again distinctly. He was carrying a woman on his shoulder, a young girl dressed in white; that young girl had a noose about her neck. Quasimodo recognized her.
It was she.
The man reached the top of the ladder. There he arranged the noose. Here the priest, in order to see the better, knelt upon the balustrade.
All at once the man kicked away the ladder abruptly, and Quasimodo, who had not breathed for several moments, beheld the unhappy child dangling at the end of the rope two fathoms above the pavement, with the man squatting on her shoulders. The rope made several gyrations on itself, and Quasimodo beheld horrible convulsions run along the gypsy's body. The priest, on his side, with outstretched neck and eyes starting from his head, contemplated this horrible group of the man and the young girl,—the spider and the fly.
At the moment when it was most horrible, the laugh of a demon, a laugh which one can only give vent to when one is no longer human, burst forth on the priest's livid face.
Quasimodo did not hear that laugh, but he saw it.
The bellringer retreated several paces behind the archdeacon, and suddenly hurling himself upon him with fury, with his huge hands he pushed him by the back over into the abyss over which Dom Claude was leaning.
The priest shrieked: "Damnation!" and fell.
The spout, above which he had stood, arrested him in his fall. He clung to it with desperate hands, and, at the moment when he opened his mouth to utter a second cry, he beheld the formidable and avenging face of Quasimodo thrust over the edge of the balustrade above his head.
Then he was silent.
The abyss was there below him. A fall of more than two hundred feet and the pavement.
In this terrible situation, the archdeacon said not a word, uttered not a groan. He merely writhed upon the spout, with incredible efforts to climb up again; but his hands had no hold on the granite, his feet slid along the blackened wall without catching fast. People who have ascended the towers of Notre–Dame know that there is a swell of the stone immediately beneath the balustrade. It was on this retreating angle that miserable archdeacon exhausted himself. He had not to deal with a perpendicular wall, but with one which sloped away beneath him.
Quasimodo had but to stretch out his hand in order to draw him from the gulf; but he did not even look at him. He was looking at the Gr ve. He was looking at the gallows. He was looking at the gypsy.
The deaf man was leaning, with his elbows on the balustrade, at the spot where the archdeacon had been a moment before, and there, never detaching his gaze from the only object which existed for him in the world at that moment, he remained motionless and mute, like a man struck by lightning, and a long stream of tears flowed in silence from that eye which, up to that time, had never shed but one tear.
Meanwhile, the archdeacon was panting. His bald brow was dripping with perspiration, his nails were bleeding against the stones, his knees were flayed by the wall.
 To complete his misfortune, this spout ended in a leaden pipe which bent under the weight of his body. The archdeacon felt this pipe slowly
giving way. The miserable man said to himself that, when his hands should be worn out with fatigue, when his cassock should tear asunder, when the lead should give way, he would be obliged to fall, and terror seized upon his very vitals. Now and then he glanced wildly at a sort of narrow shelf formed, ten feet lower down, by projections of the sculpture, and he prayed heaven, from the depths of his distressed soul, that he might be allowed to finish his life, were it to last two centuries, on that space two feet square. Once, he glanced below him into the Place, into the abyss; the head which he raised again had its eyes closed and its hair standing erect.
There was something frightful in the silence of these two men. While the archdeacon agonized in this terrible fashion a few feet below him, Quasimodo wept and gazed at the Gr ve.
The archdeacon, seeing that all his exertions served only to weaken the fragile support which remained to him, decided to remain quiet. There he hung, embracing the gutter, hardly breathing, no longer stirring, making no longer any other movements than that mechanical convulsion of the stomach, which one experiences in dreams when one fancies himself falling. His fixed eyes were wide open with a stare. He lost ground little by little, nevertheless, his fingers slipped along the spout; he became more and more conscious of the feebleness of his arms and the weight of his body. The curve of the lead which sustained him inclined more and more each instant towards the abyss.
He beheld below him, a frightful thing, the roof of Saint– Jean le Rond, as small as a card folded in two. He gazed at the impressive carvings, one by one, of the tower, suspended like himself over the precipice, but without terror for themselves or pity for him. All was stone around him; before his eyes, gaping monsters; below, quite at the bottom, in the Place, the pavement; above his head, Quasimodo weeping.
In the Parvis there were several groups of curious good people, who were tranquilly seeking to divine who the madman could be who was amusing himself in so strange a manner. The priest heard them saying, for their voices reached him, clear and shrill: "Why, he will break his neck!"
Quasimodo wept.
At last the archdeacon, foaming with rage and despair, understood that all was in vain. Nevertheless, he collected all the strength which remained to him for a final effort. He stiffened himself upon the spout, pushed against the wall with both his knees, clung to a crevice in the stones with his hands, and succeeded in climbing back with one foot, perhaps; but this effort made the leaden beak on which he rested bend abruptly. His cassock burst open at the same time. Then, feeling everything give way beneath him, with nothing but his stiffened and failing hands to support him, the unfortunate man closed his eyes and let go of the spout. He fell.
Quasimodo watched him fall.
A fall from such a height is seldom perpendicular. The archdeacon, launched into space, fell at first head foremost, with outspread hands; then he whirled over and over many times; the wind blew him upon the roof of a house, where the unfortunate man began to break up. Nevertheless, he was not dead when he reached there. The bellringer saw him still endeavor to cling to a gable with his nails; but the surface sloped too much, and he had no more strength. He slid rapidly along the roof like a loosened tile, and dashed upon the pavement. There he no longer moved.
Then Quasimodo raised his eyes to the gypsy, whose body he beheld hanging from the gibbet, quivering far away beneath her white robe with the last shudderings of anguish, then he dropped them on the archdeacon, stretched out at the base of the tower, and no longer retaining the human form, and he said, with a sob which heaved his deep chest,— "Oh! all that I have ever loved!"


Lets Play Black Jack
Your Total
Dealer Total
Bet Amount
Cash Remaining
$2500
$5
$100
Place Bet
Play
New Hand
More Cash


| 1269 | (A) | Of the hethynges that he hade and the harde wondis |
| 1263 | (C) | ¶ Of þe rebukynge þat he hadde . & of his harde woundes |
| 1257 | (D) | Of the hething he had and of þe hard woundis |
| 1233 | (E) | & of þe betyng he hadde . & of his depe woundes . |
| (Ex) | ---- no text ---- | |
| 1298 | (L) | Of þe heuyng þat he hadde & þe hard woundis |
| (P) | ---- no text ---- | |
| 1240 | (U) | Of the hething he had / and of the hard woundes |
| 334 | (V) | Of þe hethyng þat he had . and þe harde woundes |


TCP trace dump files contain summary information for every Internet packet received or transmitted on the interface. TCP trace dump files can help diagnose problems in the system.RiOS provides an easy way to capture and retrieve multiple TCP trace dumps from the Management Console. You can generate trace dumps from multiple interfaces at the same time, limit the size of the trace dump, and schedule a specific date and time to generate a trace dump. Scheduling and limiting a trace dump by time or size allows unattended captures.RiOS v7.0 and later supports remote capture analysis using the Cascade Pilot console on trace files captured and stored on the Steelhead appliance without transferring the entire packet capture across the network.The top of the TCP Dumps page displays a list of existing TCP trace dumps and the bottom of the page displays controls to create a trace dump. It also includes the trace dumps that are currently running, and controls to create a trigger that stops a trace dump when a specific event occurs. The Running Capture Name list includes TCP trace dumps running at a particular time. It includes TCP trace dumps started manually and also any dumps that were scheduled previously and are now running.
Permits remote capture analysis using Cascade Pilot. When enabled, the TCP dump capture files appear in the list of completed TCP dumps in Cascade Pilot for more detailed analysis. The Shark function does not require a separate license and is disabled by default.The Shark function uses port 61898 during the typical interaction with Cascade Pilot (for example, status requests, views configuration, and output transfer). It uses port 61899 during packet transfers.When Cascade Shark is disabled, Shark function is shut down and no processes are listening on port 61898 or 61899.You can create a TCP dump without the Cascade Shark enabled. The capture file appears in the TCP dump list in Cascade Pilot the next time you enable Cascade Shark and point Cascade Pilot to process TCP dumps from this Steelhead appliance.You must be able to reach the Steelhead appliance with Cascade Shark enabled from the computer running Cascade Pilot. Specify the name of the capture file. Use a unique file name to prevent overwriting an existing TCP dump. The default filename uses this format:hostname_interface_timestamp.capWhere hostname is the hostname of the Steelhead appliance, interface is the name of the interface selected for the trace (for example, lan0_0, wan0_0), and timestamp is in the YYYY-MM-DD-HH-MM-SS format.If this trace dump relates to an open Riverbed Support case, specify the capture filename case_number where number is your Riverbed Support case number: for example, case_12345.Note: The .cap file extension is not included with the filename when it appears in the capture queue. IPs - Specify the source IP addresses. Separate multiple IP addresses using commas to include all addresses. You can enter IPv6 addresses separated by commas. The default setting is all IP addresses.Ports - Specify the source ports. Separate multiple ports using commas. The default setting is all ports.and:IPs - Specify the destination IP addresses. Separate multiple IP addresses using commas to include all addresses. You can enter IPv6 addresses separated by commas. The default setting is all IP addresses.Ports - Specify the destination ports. Separate multiple ports using commas. The default setting is all ports. Captures the TCP trace dump on the selected interfaces. You can select all interfaces or a base, in-path, or RSP interface. The default setting is none. You must specify a capture interface. These parameters let you capture information about dot1q VLAN traffic. You can match traffic based on VLAN tagged or untagged packets, or both. You can also filter by port number or host IP address and include or exclude ARP packets. Select one of these parameters for capturing VLAN packets:Capture Untagged Traffic Only - Select this option for the following captures:
- Untagged 7850 traffic and ARP packets. You must also specify or arp in the custom flags field on this page.
- Only untagged ARP packets. You must also specify and arp in the custom flags field on this page.Capture VLAN-Tagged Traffic Only - Select this option for the following captures:
- VLAN-tagged packets with host <IP_ADDRESS> traffic and ARP packets. You must also specify <IP_ADDRESS> in the IPs field, and specify or arp in the custom flags field on this page.
-Capture both VLAN and Untagged Traffic - Select this option for the following captures:
- Both tagged and untagged 7850 traffic and ARP packets. You must also specify the following in the custom flags field on this page:—or—
- Both tagged and untagged 7850 traffic only. You must also specify 7850 in one of the port fields on this page.
- Both tagged and untagged ARP packets. You must also specify the following in the custom flags field on this page:—or— Capture Duration (Seconds) Specify how long the capture runs, in seconds. The default value is 30. Specify 0 or continuous to initiate a continuous trace. When a continuous trace reaches the maximum space allocation of 100 MB, the oldest file is overwritten. Specify the maximum capture file size, in MB. The default value is 100. After a file reaches the size set in this field, RiOS starts writing data into the next file. Riverbed recommends a maximum capture file size of 1024 MB (1 GB). Optionally, specify the maximum amount of data, in KB, allowed to queue while awaiting processing by the TCP trace dump. The default value is 154 KB. Optionally, specify the snap length value for the trace dump. Specify 0 for a full packet capture (recommended for CIFS, MAPI, and SSL traces). The default value is 1518. Number of Files to Rotate Specify how many TCP trace dump files to keep before overwriting the oldest one. To stop file rotation, you can specify 0; however, Riverbed recommends rotating files, as stopping the rotation can fill the disk partition. Specify custom flag expressions to capture various types of traffic and trace exactly what you are looking for. The three main types of expressions are: type, dir, and proto.See the capture parameters description for examples of using the arp custom flag to capture ARP packets.Type - capture traffic by host, network, or port. Use host to capture traffic based on IP address. For example, to capture traffic to or from a single host:Use net to capture an entire network using Classless Interdomain Routing (CIDR) notation. For example:Use port to capture traffic to or from a certain port. For example:Dir - capture directional traces using src, dst, src or dst, and src and dst. You can also use the endpoints capture parameters on this page to capture traffic by direction. For example, to capture traffic from only a source or destination, eliminating one side of a host conversation:Proto - capture traffic by protocol using tcp, udp, and icmp. Note that you do not have to type proto. For example: You can combine expressions to create targeted TCP dumps. For example, to capture UDP traffic based on source port 53:You can capture traffic using a range of ports instead of declaring them individually. For example, to capture traffic to any port in a range:You can capture packets by size. For example, to capture packets that are above or below a certain size (in bytes): “Error in tcpdump command. See System Log for details.”TCP dumps offer visibility into intermittent network issues, but the amount of traffic they capture can be overwhelming. Also, because rotating logs is common, once a TCP dump logs an event, the Steelhead appliance log rotation can overwrite debugging information specific to the event.RiOS v8.5 makes troubleshooting easier because it provides a trigger that can stop a continuous TCP dump after a specific log event occurs. The result is a smaller file to help pinpoint what makes the event happen.The stop trigger continuously scans the system logs for a search pattern. When it finds a match, it stops all running dumps.
3. In the Pattern control, enter a Perl regular expression (regex) to find in a log. RiOS compares the Perl regex against each new line in the system logs and the trigger stops if it finds a match.The simplest regex is a word, or a string of characters. For example, if you set the pattern to “Limit,” the trigger matches the line “Connection Limit Reached.”Perl regular expressions are case-sensitive. Perl treats the space character ' ' like any other character in a regexp. You cannot use all characters as is in a match. Perl reserves some characters, called metacharacters, for use in regex notation. The metacharacters are: You can match a metacharacter by putting a backslash before it. For example, to search for a backslash in the logs, you must enter two backslashes (\\) as the pattern.The pattern follows Perl regular expression syntax. For details, go to: You cannot change the pattern while a scan is running. You must stop the scan before changing a pattern. You do not need to wrap the pattern with the metacharacters to match the beginning or end of a line (^ $), or with the wildcard character (*).
4. Specify the amount of time to pause before stopping all running dumps when RiOS finds a match. This gives the system some time to log more data without abruptly cutting off the dumps. The default is 30 seconds. Specify 0 for no delay; the dump stops immediately.After a trigger has fired, the TCP dump can stop by itself before the delay expires; for example, the capture duration can expire.
5. Click Start Scan.When the scan stops, RiOS sends an email to all email addresses on the Configure > System Settings > Email page appearing under Report Events via Email. The email notifies users that the trigger has fired.The page indicates “Last Triggered: Never” if a TCP Dump stop trigger has never triggered on the Steelhead appliance. After the delay duration of the stop trigger, RiOS displays the last triggered time.Click Stop Scan to halt the background process that monitors the system logs. RiOS dims this button when the stop trigger is idling. You cannot create a trigger to stop a specific TCP dump; the trigger affects all running TCP dumps. If the search pattern contains a typo, the trigger might never find a match. Only one instance of a trigger can run at once.
3. Click Download to view a previously saved system dump.
4. To remove a log, select the check box next to the name and click Remove Selected.To print the TCP dump, select the trace dump filename under Download Link. When the file opens, choose File > Print in your Web browser to open the Print dialog box.
3. Click Stop Selected Captures.Riverbed offers a couple of ways to upload TCP dump files to the support server for sharing with the support team while diagnosing issues.
1. In continuous mode, on the TCP Dumps page, select the running TCP Dump and click Stop Selected Captures.
3. Optionally, specify a case number that corresponds to the TCP dump. Riverbed Support recommends using a case number; for example, 194170.To specify a URL instead of a case number, you must use the CLI. You can enter the CLI command file tcpdump upload URL. When you specify a URL, the dump file goes directly to the URL.For details, see the Riverbed Command-Line Interface Reference Manual.
4. Click Upload.Because uploading a TCP dump can take a while, a progress bar displays the percentage of the total upload completed, the case number (if applicable), and the date and time the upload began. When the TCP dump finishes uploading, the date, time, and a status of either uploaded (appears in green) or failed (appears in red).


Note: Version history for minimal documentation updates are not listed here to prevent cluttering.
History & Release Notes
4.2 / 2018-11-28
- Added: schema/type (PhilWaldmann)
4.0.0 / 2017-05-30
- Added: pg-structure throws exception when a non-existing schema requested.
- Added: Table#kind to determine whether a table is a view or table.
- Added: Schema#description and Schema#comment attributes to get schema comments.
3.5.14 / 2017-03-06
- Fixed: If same constraint name is used more than once in same schema (non-unique constraint name), pg-structure was failing.
3.5.11 / 2017-02-21
- Fixed: Column.default() was returning typecast if default value is ''.
3.5.0 / 2016-05-04
- Added: Relation naming support for CamelCase tables.
- Fixed: Default strategy for Many to Many (
m2m
) and Many to One (m2o
) relations are selected as 'simple' even 'simple' strategy causes conflict. Now complex is selected when there are conflicts between cross types ofo2m
andm2m
. - Added: Relation naming documentation.
- Added: Naming strategy test.
3.4.0
- Changed:
table#descriptionData
tag is changed from[JSON]
to[pg-structure]
- (EXPERIMENTAL) Added:
o2mRelation#generateName()
,m2oRelation#generateName()
,m2mRelation#generateName()
. Those methods are highly experimental and may be changed or deleted.
3.3.2 / 2016-02-25
- Fixed: Tables without primary key was throwing exception for
table#primaryKeyColumns
. - Fixed:
table#hasManyTables
andtable#belongsToTables
were returning array instead of Set.
3.3.0 / 2016-02-24
- Added:
table#descriptionData
,table#commentData
,column#descriptionData
,column#commentData
,constraint#descriptionData
,constraint#commentData
. It is possible to store and access JSON in objects' description.
3.2.0 / 2016-02-24
- Added:
constraint#description
,constraint#comment
. - Updated: Test ERD corrected.
3.1.1 / 2016-01-30
- Added:
column#referencedColumns
.
3.1.0 / 2016-01-26
- Added:
#array
method is added all Map types to help building arrays in non supporting environments such as nunjucks.
3.0.0 / 2016-01-16
Previous versions of pg-structure are designed to be a build time tool. v3 are designed to be a runtime tool. It is refactored to better performance compared to previous versions. Internal storage is completely rewritten. Loki DB is excellent product, but it is overkill for this project. pg-structure now uses direct object references for speed up things. DB interaction is reduced from 9 SQL queries to 3. Those 3 queries are same queries from previous version. So work of other 6 queries are done by Javascript now.
- Breaking Change:
Column#foreignKeyConstraint
is changed toColumn#foreignKeyConstraints
,Column#referencedColumn
is removed, because same column may be part of multiple different foreign key constraints which results in referencing different columns in different tables at the same time. - Breaking Change: All
...ByName
such asTable#columnsByName
methods are removed, and collections such asTable#columns
return Map instead of array or object. Maps return values in order like arrays and they can be queried with.has
method like objects. - Breaking Change:
Column#uniqueIndexesNoPK
is renamed asColumn#uniqueIndexesNoPk
. - Added: Optional Lazy loading, cache of lazy loaded parts, invalidation logic of cache.
- Added:
pgStructure.serialize
andpgStructure.deserialize
methods. - Added:
pgStructure.save
andpgStructure.load
methods. Load is 10 times faster than querying database. - Added:
Column#domainSchema
- Added:
Constraint#matchOption
,Constraint#referencedColumnsBy
- Added:
Table#belongsToManyTablesPk
,Table#m2mRelationsPk
- Doc updates and changes.
2.0.8 / 2015-12-09
- Added:
Table#description
andTable#comment
attributes added to the table object. - Fixed: Table sql was returning null for table descriptions.
2.0.5 / 2015-12-08
- Changed: Code and API cleanup and simplification since alpha releases.
- Changed: Array and collection object returning attributes now return empty array or empty object if no result found. Previously they returned null. They are usually used in loops, and this change helps getting rid of null checks.
- Removed: All methods which are duplicate of attributes. They cause duplicated code and don't add any useful contribution. Same can be achieved using attributes with foreach and better can be achieved with for..of.
2.0.0-alpha.9 / 2015-11-29
- Fixed: One to many and many to one relations duplicates.
2.0.0-alpha.8 / 2015-11-29
- Fixed: Join tables with more than one relations produce warning about non-unique constraint.
- Fixed: referencedTable returns undefined.
- Fixed: Example on README throws exception. Typo corrected. Catch part added.
- Added: New tests for fixed bugs.
2.0.0-alpha.5 / 2015-11-19
- Added: Table#relations and Table#getRelations().
2.0.0-alpha.3 / 2015-11-19
- Fixed: Broken links in documentation.
2.0.0-alpha.2 / 2015-11-17
- Added: Index class is added.
- Fixed: Column#unique was assuming that a column can have only one unique constraint. Now it returns array.
- Fixed: Column#unique was ignoring unique indexes Now it considers unique indexes too.
- Fixed: Many typos in constraint class documentation.
2.0.0-alpha.1 / 2015-11-11
- BREAKING CHANGES
- Completely rewritten.
- Methods are converted to read only attributes.
- New methods are named as verb such as getColumn().
- New classes added: Relation, O2MRelation (one to many), M2ORelation (many to one), M2M Relation (many to many).
- Constraint features that are technically not available in DB Engine moved from
Constraint
class to relatedRelation
classes. - Documentation updated completely and added clearer examples.
- Some method names and attributes are more intuitive than previous version.
Why v2 has incompatible changes?
Version 2 is designed to be more elegant and more intuitive. Methods are changed to read only attributes and new methods
are easily distinguished from attributes with verb based names such as columns
vs getColumns()
.
Additionally new Relation
classes are added. Some of the features are moved from Constraint
to Relation
,
because some features are technically not available in DB Engine and those features misrepresent Constraint
.
For example many to many relations are virtual relationships which do not actually exist in database. They are tables joined via a third join table.
1.11.1 / 2015-06-16
- Added: JSONB support. Contributed by: viniciuspinto (https://github.com/viniciuspinto)
1.11.0 / 2014-12-30
- Added: Constraint.throughForeignKeyConstraintToSelf() method added.
- Added: Winston logging.
- Fixed: Many to Many relations has name collisions if join table connects more than one table and one of the tables has more than one connection to join table. Naming of many to many relations changed.
1.10.0 / 2014-12-23
- Added: db.includedSchemas method to get list of requested schemas to be parsed.
- Added: db.schemaIncluded method to determine if given schema name is one of the requested schemas to be parsed.
- Fix: If a table has a reference to not included schema, throws exception. Should not include its foreign key.
- Doc update.
1.9.0 / 2014-12-12
- Added: table.hasManyThrough.throughForeignKeyConstraint method added to constraint class.
1.8.3 / 2014-12-10
- Fix: Sequelize type length, precision.
1.8.2 / 2014-12-10
- Fix: Sequelize type date, time etc. has no length property.
- Fix: Sequelize type dateonly added.
- Tests added.
1.8.0 / 2014-12-10
- Added: Shortcut function 'get' added to db, schema and table classes.
- Fix: hasManyThrough does not return foreign keys.
1.7.0 / 2014-12-10
- Added: onDelete and onUpdate added to hasMany and hasManyThrough relations.
1.6.0 / 2014-12-10
- DEPRECATED: column.special function. Use column.enumValues instead.
- Added: Tests for enum values.
- Added: Enum support for column.sequelizeType function.
- Updated: Documentation
1.5.1 / 2014-12-04
- Fix: Test db does not destroyed after tests.
1.5.0 / 2014-12-04
- Fix: column.default() method returns default value with type cast. From now on yype cast part is stripped.
- Added column.defaultWithTypeCast() method for getting default values with type cast part.
- Tests added for default values.
1.4.0 / 2014-11-28
- Added support for user-defined types.
- Added column.udType() method to get user defined type name.
- Added necessary tests.
1.3.1 / 2014-11-27
- Added history to readme.
- Fix: Major error: Single schema or default 'public' schema databases throw error.
- Fix: Databases without any table throw error.
- Added tests of this fixes and table without any column.
1.3.0 / 2014-11-27
- Parameter validation added to pg-structure main function. This would ease debugging.
- Fix: pg-structure.generate function was throwing error, now it calls its callback with error if database connection error occurs.
1.2.0 / 2014-11-26
- Fix: pg-structure callback does not get error object. Instead error is thrown. Now callback gets error object as its first parameter as expected.
- db.schema() function now throws more informative error if referenced schema is not found in db and also not in the options of requested schemas.
- db.schemaExist() function added.
- History.md file added. (This file)
1.1.0 / 2014-11-25
- table.foreignKeyConstraintExist() function added.
1.0.0 / 2014-11-25
- Completely rewritten to migrate from plain object to object oriented design.
- column.sequelizeType() method added. This method gets sequelize compatible type of the column.


Welcome to ClearSky! Here you can find the ideal conditions for stargazing.
Enter your location and the site will give info on current weather conditions
Blog Section
Recent Posts
{% for post in posts %}
{{ post['title'] }}
by {{ post['username'] }} on {{ post['created'].strftime('%Y-%m-%d') }}


Tycho Tcl Testing Framework
Use of the
tycho.util.tytest
package is covered in
Testing Tycho
Copyright © 1998, The Regents of the University of California. All rights reserved.
Last updated: 05/18/98, comments to:
tycho@eecs.berkeley.edu


College GameDay Airs Incredible Feature On Former Oregon WR Keanon Lowe
by Alek Arend‘Hero’ is a word often thrown around when it comes to sports. Most of the time, the word describes a player who had an incredible performance or valiant effort. Former Oregon WR Keanon Lowe is known as a hero, but it’s not for anything he did on the field.
ESPN’s College GameDay aired an incredible feature on the former Duck on Saturday morning. Lowe, now working as a high school football coach and campus security guard in Portland, chose to work with youth to make an impact. But what he did back in May was so much more than he ever would’ve expected.
On May 17, Lowe was called to check on a student – a routine responsibility of his job. Just moments after entering the classroom, a potential school shooter carrying a shotgun entered the hallway. Lowe’s next step came out of instinct and compassion. Instead of tackling the gunman, he simply wrestled the gun away and embraced the young man in a hug.
Check out College GameDay’s feature on Lowe in the video below.
Lowe has made a bigger impact than he ever thought possible – saving many lives in the process. He’s also helped the Parkrose high school football team rise from the dust and become a competitive program.
Lowe is the perfect representation of a hero.


It should be noted that in the TL schema of the overwhelming majority of API calls the use of polymorphic types is restricted to the Vector type. Nevertheless, having a view of the big picture is still helpful.
For example, let us consider the IntList, which is defined as follows:
int_cons hd:int tl:IntList = IntList;
int_nil = IntList;
The “int_cons” and “int_nil” constructors as well as the “IntList” type itself are expressions of the following types (writing A : X means that A is an expression of type X):
IntList : Type;
int_cons : int -> IntList -> IntList;
int_nil : IntList;
The keyword Type is used to denote the type of all types. Note that Type is not Object (Object is the type of all terms). Here is alternative syntax that could be used in some other functional programming language (but not in TL):
NewType IntList :=
| int_cons hd:int tl:IntList
| int_nil
EndType
TL supports the following version (curly brackets indicate optional fields, see below):
cons {X:Type} hd:X tl:(List X) = List X;
nil {X:Type} = List X
Here is an alternative formulation in other functional languages with dependent types:
NewType List {X:Type} :=
| cons {X:Type} hd:X tl:(List X)
| nil {X:Type}
EndType
In any event, these variations are equivalent to one another from the point of view of the formal theory of types and lead to the definition of the following terms:
List : Type -> Type;
cons : forall (X:Type), X -> List X -> List X;
nil : forall (X:Type), X -> List X;
In each case, remember that writing “A -> B” is shorthand for “forall (x : A), B” for any variable x not entering into A and B. For example, the “cons” type could be written as follows:
cons : forall (X:Type), forall (hd : X), forall (tl : List X), List X
or more compactly:
cons : forall (X : Type) (hd : X) (tl : List X), List X
See Calculus of constructions. Examples of functional languages with dependent types, which support similar constructions are Coq and Agda.
In this case, the entry after a universal quantifier proves to be more content-related than that after an arrow, because the name of a variable bound by the quantifier is used to transmit the name of the corresponding field in the constructor, even if this variable is not used anywhere as it pertains to the expression under the quantifier. Structurally, all of these entries of the “cons” type are equivalent.
As we can see, to serialize a value of type List X, which has been obtained by applying the combinator “cons X:Type hd:X tl:(List X) = List X”, we need to:
In the first step, the natural question is which string exactly will be used to calculate the CRC32. It is proposed to take "cons X:Type hd:X tl:List X = List X
” without the terminating semicolon and without any parentheses (closed type expressions are unambiguously reconstructed based on their construction’s prefix).
In the last step, we recursively resolve the very same problem of serializing a value of type List X; we will consider it resolved based on the assumption of induction in the construction of the value being serialized. We will similarly consider the third step understandable (induction in the construction of the value being serialized).
We still need to describe how to transmit (serialize) types, e.g. values of type Type. Types in TL schemas currently appear only as constructors’ optional parameters and are therefore never serialized explicitly. Rather, their values are inferred from the previously known type of the value being serialized.
For completeness we will describe how it would be possible to serialize types (values of type Type). However, keep in mind that for now this information is not useful. See Type serialization.
It was stated above that any subset of (the first few) parameters of any constructor can be identified as optional (by enclosing their declarations in curly brackets), but this is not actually entirely accurate. First, these optional parameters can only be of type Type
or #
(natural numbers). Second, optional parameters must share the return value’s type, otherwise their value cannot be determined.
Note that @'''constr-id''' means the constructor’s “full form” (in which all optional parameters become required), while '''constr-id'’ denotes its abbreviated form (without the optional arguments). If there are no optional arguments, then these two forms are the same. Constructors’ full forms are never used at present.
There is a small problem: if we want to serialize the value of the bare type ‘%pair string int’ or ‘%pair string Y’ (which in TL is usually denoted simply as “pair”, though the form “%Pair” is preferable), we cannot simultaneously use both the full constructor @pair and the partial pair, because the constructor’s name will not be serialized. Therefore, we must differentiate the bare types %@pair (type X, type Y, value x:X, and value y:Y are serialized) and %pair (only x:X and y:Y are serialized; types X and Y are known from the context). In practice, we nearly almost always need the bare type %pair, and this is precisely what “pair” means in the type’s context in TL. Therefore,
record name:string map:(List (pair int string)) = Record;
will be serialized approximately like we want it to be (the serialization of list elements will consist of the serialization of int and the serialization of string, without any additional headers, types, or combinator names).
Incidentally, when calculating the “record” combinator’s name 'record' in the example given above, the CRC32 of record name:string map:List pair int string = Record
will be computed.
Also note that a more precise description of this type would be
record name:string map:(List %(Pair int string)) = Record


Man,
Multiple ethical dramas of late. It’s been odd to see how they play out. Not what I expected, and now I’m forced to grow my perspective on things. Thanks to those involved for holding the contrast.
The main one is @el-mago, but has since brought in @transisto, @gigafart, and @julianita.
Without a small bit of irony I recently wrote a piece about the last HF and titled it unintended consequences. So, now I get to make my story about unintended consequences of my actions of which I blurred the lines of protagonist and antagonist.
I’ve been at running minnow support for less than 3 weeks. The channel is about to have its 2,000th person enter. I suspect that happens today or tomorrow. It brings a lot of minor issues like tech support and howtos, but now it’s big enough to present some ethical dilemnas.
@el-mago was taking porn shots he didn’t own and posting them. He got flagged by @cheetah and a member of MSP flagged him too. @el-mago went and flagged the minnow’s active posts and resteems too. I requested multiple times that he take the flags off and said I’d flag him if he didn’t. He threatened me, so I used @minnowsupport to flag his posts and some comments too.
Running through my head was-
He is abusing the system by stealing photos.
He is verbally abusive to users.
He’s abusing the flagging system.
If he threatens me he’ll have zero qualms going after others who are small.
Intended consequences- His posts went to zero. And his rep went to -4. Justice was served… or not.
Unintended consequences-
@julianita and @transisto came through and upvoted his latest post to $50.
@gigafart who was following downvotes on the trail lost power to downvotes he didn’t support. I think he may have abandoned the trail.
Minnows weren’t compensated for posts because the power was going to downvotes.
el-mago started flagging a series of minnows so I’ve devoted time and power to individual upvotes beyond the standard vote available to all public members.
I’ve written two posts giving someone a fair amount of exposure for comments and posts I don’t support.
While reading the comments on his last post @transisto made a point about going into negative rep as censorship. I can say it was my intention, but also that my intention there was wrong. @transisto is right, people have a right to say things. On this platform you can’t censor hatespeech and verbal abuse without also unintentionally inhibiting one’s ability to either defend himself, or do something different.
It’s easy to say “I may hate your opinion on healthcare, but I’ll defend your right to talk about it.” It’s less clear when it’s “I hate when you string together a derogatory and offensive string of insults, but I’ll defend your right to abuse people verbally.” One challenge is that on this platform I can’t really segregate the two. I suppose in hindsight it would have been better to try to warmly and kindly educate rather than launch flags that could have been avoided. I’m sorry I didn’t do more of that.
Also, I was writing a memethenews post and realizing I’m adding pictures that I don’t own. Memes are designed to be shared and spread. Many members add a watermark now if they feel recognition of their work is important as opposed to just sharing for the lolz. Some of the underlying pics in the memes are themselves copyrighted. I suppose creative commons protects them for use in education, but when it’s commercial and Steem gets involved maybe that’s a violation too. I’ve tried to use royalty free images for most of the random posts I’ve done, but I can’t guarantee I haven’t taken someone else’s work, profited from it, and in some ways that’s reminiscent of what I flagging.
Then I saw a comment in his last post from him about testing the steemit drama. The whole comment seemed like it was in the spirit of deescalation. I applaud that step and followed suit. I’ve removed the flags I placed using minnowsupport. One post is past rewards and he lost 1 SBD. I have sent him that. I’ve removed the flags from @aggroed. I suggest minnows leave him be, and unflag his posts. It’s possible trailers will remain, but he should have enough upvotes from the other whales to more than compensate for their unintended flags.
It’s time to deescalate rather than escalate. I should have tried harder in that regard to start. I don’t support the posts, the comments, the actions, but it would seem there are better approaches especially involving an account 10 days old. So, here’s hoping it goes well. Welcome to the community @el-mago. I wish you well and many blessings of peace and prosperity from here on out. Make some original content. I may even support it.
Now what to do about doxxing within minnowsupport?
As you were.
@aggroed
This page is synchronized from the post: ‘Steemit Ethics- Unintended consequences and efforts towards deescalation’


Enter 1 location to find all journeys or 2 locations for a specific journey in the journey price catalogue.
Error: Please enter either a pick up or drop off location


A virtual machine with a ready-to-use Modoboa setup is available here. It is composed of the following components:
Actually, it is the result you obtain if you follow the official documentation.
The disk image is using the VMDK format and is compressed using bzip2. To decompress it, just run the following command:
$ bunzip2 modoboa.vmdk.bz2
If you can’t use the vmdk format, you can use qemu to convert it to another one. For example:
$ qemu-img convert modoboa.vmdk -O qcow2 modoboa.qcow2
Then, just use your prefered virtualization software (qemu, kvm, virtualbox, etc.) to start the machine. You’ll need to configure at least one bridged network interface if you want to be able to play with Modoboa, ie. your machine must be visible from your network.
The default network interface of the machine (eth0) is configured to use the DHCP protocol.
The following UNIX users are available if you want to connect to the system:
| Login | Password | Description |
|---|---|---|
| root | demo | the root user |
| demo | demo | an unpriviliged user |
To connect to Modoboa, first connect to the system and retrieve its current network address like this:
$ /sbin/ifconfig eth0
Once you know its address, open a web browser and go to this url:
http://<ip_address>/admin/
You should see the login page. Here are the users available by default:
| Login | Password | Capabitilies |
|---|---|---|
| admin | password | Default super administrator. Can do anything on the admin but can’t access applications |
|<EMAIL_ADDRESS>| admin | Administrator of the domain demo.local. Can administrater its domain and access to applications. |
|<EMAIL_ADDRESS>| user | Simple user. Can access to applications. |


Respond to a money claim
| Before you start | task status |
|---|---|
| Confirm your details | {% if data.confirm_details=="complete" %} {% include "includes/task_status_finished.html" %} {% endif %} |
| Respond to claim | |
|---|---|
| More time needed to respond | {% if data.more_time_to_respond=="complete" %} {% include "includes/task_status_finished.html" %} {% endif %} |
| Do you owe the money claimed | {% if data.do_you_owe_money=="complete" %} {% include "includes/task_status_finished.html" %} {% endif %} |
| Your defence | {% if data.your_defence=="complete" %} {% include "includes/task_status_finished.html" %} {% endif %} |
| Submit | ||
|---|---|---|
| Check and submit your response | {% else %}Check and submit your response | {% endif %}{% if data.paid=="complete" %} {% include "includes/task_status_finished.html" %} {% endif %} |


THe TARORY OF INTERNATIONAL TRADE IN CAPTI@AL GOODS
Murdo Alesdair Macdonalé Smith University College, Oxford
Abstract of thesis submitted for the degree of D.Phil. of the JIniversity of Oxford.
September 19737


---
layout: api
title: "v2.2.1 JavaScript Library: L.Control"
categories: api
version: v2.2.1
permalink: /api/v2.2.1/l-control/
---
Control
The base class for all Leaflet controls. Implements IControl interface. You can add controls to the map like this:
control.addTo(map);
// the same as
map.addControl(control);
Creation
| Factory |
Description |
L.control(
<Control options> options? )
|
Creates a control with the given options. |
Options
| Option |
Type |
Default |
Description |
position |
String |
'topright' |
The initial position of the control (one of the map corners). See control positions. |
Methods
| Method |
Returns |
Description |
setPosition(
<String> position )
|
this |
Sets the position of the control. See control positions. |
getPosition() |
String |
Returns the current position of the control. |
addTo(
<Map> map )
|
this |
Adds the control to the map. |
removeFrom(
<Map> map )
|
this |
Removes the control from the map. |
getContainer() |
HTMLElement |
Returns the HTML container of the control. |
Control Positions
Control positions (map corner to put a control to) are set using strings. Margins between controls and the map border are set with CSS, so that you can easily override them.
| Position |
Description |
'topleft' |
Top left of the map. |
'topright' |
Top right of the map. |
'bottomleft' |
Bottom left of the map. |
'bottomright' |
Bottom right of the map. |