[عزف الموسيقى] ROB BOWDEN: مرحبا. أنا روب. ودعونا من هذا الحل. حتى هنا ونحن في طريقنا لتنفيذ جدول عام. ونحن نرى أن العقدة البنية لدينا الجدول سوف تبدو هذه. لذلك ستكون لدينا كلمة شار مجموعة من حجم الطول + 1. لا ننسى + 1، حيث الحد الأقصى كلمة في القاموس هو 45 حرفا. ثم نحن في طريقنا للحاجة واحدة اضافية حرف مائل للصفر. ثم hashtable لدينا في كل دلو يجري لتخزين قائمة مرتبطة العقد. ونحن لا نفعل الخطية التحقيق هنا. وذلك من أجل ربط المقبل عنصر في دلو، ونحن بحاجة إلى عقدة البنية * المقبل. موافق. وهذا ما يبدو عقدة مثل. الآن هنا هو إعلان من hashtable لدينا. انها ستكون لدينا 16834 الدلاء. ولكن هذا العدد لا يهم حقا. وأخيرا، ونحن في طريقنا لديها العالمية hashtable حجم المتغير الذي سوف تبدأ صفر. وانه سيكون لتتبع كيف العديد من الكلمات في قاموسنا. لذلك دعونا نلقي نظرة على الحمل. تلاحظ أن الحمل، تقوم بإرجاع منطقي. لك العودة الحقيقية إذا كان بنجاح تحميل، وكاذبة خلاف ذلك. ويستغرق شار كانت const * القاموس، وهو القاموس أننا نريد لفتح. ولهذا فإن أول شيء ونحن في طريقنا للقيام به. ونحن في طريقنا إلى FOPEN و القاموس للقراءة. ونحن في طريقنا لديك لجعل على يقين من أنه نجح في ذلك. حتى إذا عادت فارغة، ثم أننا لم بنجاح فتح القاموس. ونحن بحاجة إلى عودة كاذبة. ولكن على افتراض أن فعلت بنجاح مفتوحة، ثم نريد أن قراءة القاموس. حتى تبقى حلقات حتى نجد بعض السبب للخروج من هذه الحلقة، الذي سنرى. حتى تبقى حلقات. والآن ونحن في طريقنا ل malloc عقدة واحدة. وبطبيعة الحال نحن بحاجة في الهواء التحقق مرة أخرى. حتى إذا mallocing لم تنجح، ثم نحن نريد لتفريغ أي عقدة أننا حدث لmalloc قبل، إغلاق القاموس وعودة كاذبة. ولكن تجاهل ذلك، على افتراض أننا نجحت، ثم نريد أن استخدام fscanf لقراءة كلمة واحدة من وجهة نظرنا القاموس في عقدة لدينا. حتى أن نتذكر أن دخول> كلمة هو شار كلمة عازلة من حجم LENGHTH + 1 أننا ذاهبون لتخزين كلمة فيه. حتى fscanf يجري في العودة 1، طالما كما كان قادرا على بنجاح قراءة كلمة من الملف. إذا حدث أي خطأ، أو أننا تصل إلى نهاية الملف، فإنه لن تعود 1. وفي هذه الحالة فإنه لا يرجع 1، نحن في نهاية المطاف الذهاب الى الخروج من هذه الحلقة من الوقت. لذلك نرى أنه بمجرد أن لدينا بنجاح قراءة في كلمة دخول> كلمة، ثم ونحن في طريقنا إلى أن الكلمة باستخدام دالة البعثرة لدينا. دعونا نلقي نظرة على وظيفة التجزئة. لذلك لا تحتاج حقا لفهم هذا. وفعلا نجحنا فقط هذا التجزئة تعمل من الإنترنت. الشيء الوحيد الذي تحتاجه هو الاعتراف أن هذا يأخذ شار كانت const * كلمة. حتى انها لاتخاذ سلسلة كمدخل، و إرجاع صحيح غير الموقعة كإخراج. بحيث كل وظيفة تجزئة هو، هو يأخذ في مداخل ويعطيك الفهرس في hashtable. لاحظ أننا moding بواسطة NUM_BUCKETS، لذلك عاد تلك القيمة هو في الواقع فهرس في hashtable ومؤشر لا تتجاوز حدود الصفيف. ذلك بالنظر إلى أن وظيفة، ونحن في طريقنا إلى تجزئة الكلمة التي قرأنا القاموس. ثم نحن في طريقنا للاستخدام أن تجزئة لإدراج دخول hashtable. تجزئة الآن hashtable هو الحالي قائمة مرتبطة في الجدول. وانه من الممكن جدا انها مجرد NULL. نحن نريد لإدراج دخولنا في ابتداء من هذه القائمة المرتبطة. وحتى ونحن في طريقنا لدينا الحالي نقطة الدخول إلى ما hashtable وتشير حاليا. ثم ونحن في طريقنا لتخزين و في hashtable في التجزئة، الإدخال الحالي. حتى هذين الخطين إدراج بنجاح دخول في بداية قائمة مرتبطة في ذلك مؤشر في hashtable. مرة واحدة ننتهي مع هذا، ونحن نعلم أننا وجدنا كلمة أخرى في القاموس، ونحن زيادة مرة أخرى. لذلك علينا أن نحافظ يفعل ذلك حتى fscanf عاد أخيرا شيئا غير 1 في هذه النقطة أن نتذكر أن نحن بحاجة إلى تحرير دخول. لذلك نحن هنا malloced إدخال. وحاولنا أن نقرأ شيئا من القاموس. ونحن لم يقرأ بنجاح شيء من القاموس، في هذه الحالة نحتاج لتحرير دخول أننا في الواقع لم يضع في hashtable، وكسر في نهاية المطاف. بمجرد ان تندلع نحن بحاجة الى ان نرى، أيضا، نحن لم تندلع بسبب وجود كان يقرأ خطأ من الملف؟ أو أننا لم تندلع لأننا وصلت إلى نهاية الملف؟ إذا كان هناك خطأ، ثم نحن نريد أن عودة كاذبة. لأن الحمل لم تنجح. وفي عملية نريد أن يفرغ كل الكلمات التي نقرأ في و إغلاق ملف القاموس. على افتراض أننا لم ننجح، فإننا فقط لا تزال بحاجة لإغلاق القاموس ملف، وأخيرا العودة الحقيقية لأننا بنجاح تحميل القاموس. وهذا كل شيء عن الحمل. حتى تحقق الآن، ونظرا لhashtable تحميل، سوف تبدو هذه. حتى تحقق، تقوم بإرجاع منطقي، وهو الذهاب إلى بيان ما إذا كانت مرت في شار * كلمة سواء التي تم تمريرها في السلسلة في قاموسنا. حتى إذا كان في القاموس، إذا كان في hashtable لدينا، وسوف نعود صحيح. وإذا لم يكن، وسوف نعود كاذبة. ونظرا لهذا مرت في كلمة واحدة، نحن الذهاب إلى تجزئة الكلمة. الآن الشيء المهم هو الاعتراف أنه في الحمل عرفنا أن كل من الكلمات ونحن في طريقنا إلى أن تكون أقل حدة. ولكن هنا نحن لسنا على يقين من ذلك. إذا كان لنا أن نلقي نظرة على وظيفة التجزئة لدينا، دالة البعثرة لدينا في الواقع أقل غلاف كل حرف للكلمة. ذلك بغض النظر عن رسملة كلمة، وظيفة تجزئة لدينا هو العودة نفس المؤشر لأيا كان القيمة، كما كان يمكن أن يكون عاد لصغيرة تماما نسخة للكلمة. ما يرام. وهذا مؤشر لدينا هو في hashtable لهذه الكلمة. الآن هذا للحلقة هو الذهاب الى تكرار عبر القائمة المرتبطة التي كانت في ذلك مؤشر. حتى إشعار نحن تهيئة الدخول للإشارة إلى أن مؤشر. ونحن في طريقنا لمواصلة حين دخول! = NULL. وتذكر أن تحديث المؤشر لدينا في إدخال قائمة مرتبطة = الإدخال> المقبل. بحيث يكون لدينا نقطة دخول الحالي ل العنصر التالي في القائمة المرتبطة. لذلك لكل إدخال في القائمة المرتبطة، ونحن في طريقنا لاستخدام strcasecmp. انها ليست strcomp. لأن مرة أخرى، ونحن نريد ل تفعل أشياء حالة اكتراث. لذلك نحن نستخدم strcasecmp مقارنة الكلمة التي تم تمريرها من خلال هذا وظيفة ضد الكلمة وهذا هو في هذا الإدخال. اذا عاد الصفر، وهذا يعني أن هناك مباراة، وفي هذه الحالة نريد أن العودة الحقيقية. وجدنا بنجاح كلمة في hashtable لدينا. إذا لم يكن هناك تطابق، ثم نحن الذهاب الى حلقة مرة أخرى وإلقاء نظرة على الإدخال التالي. وسوف نستمر في حين أن هناك حلقات هي الإدخالات في هذه القائمة المرتبطة. ماذا يحدث إذا ما تم كسر للخروج من هذه الحلقة ل؟ وهذا يعني أننا لم نجد أن إدخال يقابل هذه الكلمة، وفي هذه الحالة نعود كاذبة تشير إلى أن لدينا لم hashtable لا يحتوي على هذه الكلمة. وهذا هو الاختيار. لذلك دعونا نلقي نظرة على الحجم. الآن حجم ستكون بسيطة جدا. تذكر منذ ذلك الحين في الحمل، لكل كلمة وجدنا، ونحن زيادة عالمي حجم hashtable متغير. وبالتالي فإن وظيفة حجم هو مجرد الذهاب للعودة متغير عمومي. وهذا كل شيء. الآن أخيرا، نحن بحاجة إلى تفريغ القاموس مرة واحدة انها فعلت كل شيء. فكيف نحن ذاهبون للقيام بذلك؟ هنا نحن على حلقات كل دلاء من جدول أعمالنا. لذلك هناك NUM_BUCKETS الدلاء. ولكل قائمة مرتبطة في منطقتنا hashtable، ونحن في طريقنا إلى حلقة أكثر مجمل القائمة المرتبطة، تحرير كل عنصر. الآن نحن بحاجة إلى توخي الحذر. حتى هنا لدينا متغير مؤقت وهذا ما تخزين المؤشر إلى القادم عنصر في قائمة مرتبطة. ثم ونحن في طريقنا إلى الحرة العنصر الحالي. نحن بحاجة للتأكد من أننا نفعل ذلك لأننا لا يمكن فقط تحرير العنصر الحالي ومن ثم محاولة الوصول إلى مؤشر المقبل، منذ مرة واحدة لقد تحريرها، الذاكرة تصبح غير صالحة. لذلك نحن بحاجة للحفاظ على حول المؤشر ل العنصر التالي، ثم يمكننا أن تحرير العنصر الحالي، وبعد ذلك يمكننا تحديث العنصر الحالي لدينا للإشارة إلى العنصر التالي. سنقوم حلقة في حين أن هناك عناصر في هذه القائمة المرتبطة. ونحن سوف نفعل ذلك وكلها مرتبطة القوائم في hashtable. وبمجرد أن انتهيت مع ذلك، لدينا أفرغت تماما hashtable، و ننتهي. لذلك فمن المستحيل لتفريغ من أي وقت مضى للعودة كاذبة. وعندما ننتهي، ونحن مجرد العودة الحقيقية. دعونا نعطي هذا الحل المحاولة. لذلك دعونا نلقي نظرة على ما لدينا سوف تبدو وكأنها عقدة البنية. وهنا نرى ونحن في طريقنا لديك منطقي كلمة وعقدة البنية * الأطفال قوس الأبجدية. وبالتالي فإن أول شيء قد يكون أتساءل، لماذا هو الأبجدية إد يعرف بأنه 27؟ كذلك، تذكر أننا سنحتاج الى ليتم التعامل مع اقتباس أحادية. بحيث ستكون نوعا من حالة خاصة خلال هذا البرنامج. الآن تذكر كيف TRIE يعمل فعلا. دعونا نقول أننا فهرسة كلمة "القطط". ثم من جذر TRIE، ونحن في طريقنا لإلقاء نظرة على الأطفال مجموعة، ونحن في طريقنا للبحث في المؤشر الذي يتوافق مع رسالة C. بحيث سيتم فهرستها 2. ذلك بالنظر إلى أن، أن الإرادة تعطينا عقدة جديدة. ومن ثم سنعمل من تلك العقدة. ذلك بالنظر إلى أن عقدة، ونحن مرة أخرى سوف ننظر في مجموعة الأطفال. ونحن في طريقنا للبحث في الفهرس الصفر لتتوافق مع A في القط. حتى ذلك الحين ونحن في طريقنا للذهاب إلى تلك العقدة، وبالنظر إلى أن عقدة ونحن في طريقنا أن ننظر إلى نهاية انها يتوافق لT. والانتقال إلى تلك العقدة، أخيرا، لقد بدا تماما من خلال كلمتنا "القط". ومنطقي الآن ومن المفترض الكلمة للإشارة إلى ما إذا كان هذه كلمة معينة هو في الواقع كلمة واحدة. فلماذا نحتاج أن حالة خاصة؟ جيدا ما للكلمة "كارثة" في قاموسنا، ولكن كلمة "القط" هو لا؟ لذلك، والتطلع إلى معرفة ما إذا كانت كلمة "القط" يتم في قاموسنا، نحن سوف ننظر بنجاح من خلال مؤشرات C-A-T في عقدة المنطقة. ولكن هذا فقط بسبب كارثة حدث لإنشاء العقد على الطريق من C-A-T، وصولا إلى في نهاية الكلمة. بحيث يتم استخدام كلمة منطقي للإشارة إلى ما إذا كان هذا الموقع خاص يشير في الواقع كلمة. حسنا. حتى الآن أن نعرف ما هو TRIE الذهاب لتبدو وكأنها، دعونا ننظر في تحميل وظيفة. ذلك الحمل هو الذهاب لإرجاع منطقي لما إذا كنا بنجاح أو تحميل دون جدوى القاموس. وهذا سيكون القاموس أننا نريد أن يتم تحميلها. أولا حتى شيء نحن القيام به هو فتح حتى أن القاموس للقراءة. وعلينا أن نتأكد من نحن لم تفشل. حتى إذا كان القاموس لا افتتح بنجاح، فإنه سيعود فارغة، في هذه الحالة نحن سوف تعود كاذبة. ولكن على افتراض أنه بنجاح فتح، ثم يمكننا أن نقرأ الواقع من خلال القاموس. أولا حتى شيء ونحن في طريقنا ل تريد القيام به هو لدينا هذا الجذر متغير عمومي. الآن الجذرية ستكون عقدة *. انها قمة TRIE لدينا أننا ستكون بالتكرار عبر. وبالتالي فإن الشيء الأول الذي نحن ذاهبون تريد القيام به هو تخصيص الذاكرة لدينا الجذر. تلاحظ أن نستخدمه في calloc وظيفة، والتي هي في الأساس نفسه كما الدالة malloc، إلا انها مضمونة للعودة شيء ركزت تماما. لذلك إذا كنا malloc، فإننا بحاجة إلى تذهب من خلال جميع المؤشرات في موقعنا عقدة، وتأكد من أن انهم جميعا فارغة. حتى calloc سوف نفعل ذلك بالنسبة لنا. الآن تماما مثل malloc، ونحن بحاجة للتأكد التأكد من أن تخصيص كان في الواقع ناجحة. إذا كان هذا عاد فارغة، ثم نحن تحتاج إلى إغلاق أو القاموس ملف وعودة كاذبة. حتى على افتراض أن تخصيص و ناجحة، ونحن في طريقنا إلى استخدام عقدة * المؤشر إلى تكرار خلال TRIE لدينا. حتى جذورنا لن تتغير، ولكن ونحن في طريقنا إلى استخدام المؤشر ل في الواقع الانتقال من عقدة إلى عقدة. حتى في هذا لأننا حلقة القراءة من خلال ملف القاموس. ونستخدمه fgetc. Fgetc هو الذهاب الى الاستيلاء على واحد حرف من الملف. ونحن في طريقنا لمواصلة الاستيلاء الأحرف في حين أننا لا تصل إلى نهاية الملف. هناك نوعان من الحالات التي تحتاج إلى معالجة. الأولى، إذا كان الحرف لم يكن سطر جديد. حتى نعرف ما اذا كان هذا الخط الجديد، ثم نحن على وشك الانتقال إلى كلمة جديدة. ولكن على افتراض أنه لم يكن سطر جديد، ثم هنا نريد أن معرفة مؤشر نحن في طريقنا للمؤشر في في مجموعة الأطفال التي ونحن ننظر في من قبل. لذلك، كما قلت من قبل، نحن بحاجة إلى حالة خاصة اقتباس أحادية. لاحظ أننا باستخدام الثلاثي المشغل هنا. لذلك نحن ذاهبون لقراءة هذا، إن كان الطابع نقرأ في اقتباس أحادية، ثم نحن في طريقنا لتعيين مؤشر = "الأبجدية" -1، والتي سوف يكون مؤشر 26. آخر، إذا لم يكن الفاصلة العليا، هناك ونحن في طريقنا لتعيين المؤشر تساوي ج - أ. حتى أن نتذكر مرة أخرى من قبل ف مجموعات، ج - هو ذاهب لإعطاء لنا موقف أبجدية حتى إذا C. C هو حرف A، وهذا سوف تعطينا مؤشر الصفر. هذه الرسالة B، فإنه سيعطي لنا مؤشر 1، وهلم جرا. لذلك هذا يعطينا مؤشر إلى مجموعة الأطفال التي نريد. الآن إذا كان هذا المؤشر هو فارغة حاليا في الأطفال، وهذا يعني أن العقدة غير موجود حاليا من هذا الطريق. لذلك نحن بحاجة إلى تخصيص عقدة لهذا المسار. وهذا ما سنقوم به هنا. لذلك نحن ذاهبون الى استخدام مرة أخرى calloc وظيفة، بحيث لم يكن لدينا ل صفر خارج كل المؤشرات. ونحن بحاجة مرة أخرى للتحقق لم تفشل أن calloc. إذا لم تفشل calloc، ثم نحن بحاجة لتفريغ كل شيء، أغلق لدينا القاموس، وعودة كاذبة. حتى على افتراض أنه لم يفشل، ثم هذا سيخلق طفل جديد بالنسبة لنا. ثم سنذهب الى هذا الطفل. سيكون المؤشر لدينا تكرار وصولا الى هذا الطفل. الآن إذا كان هذا غير فارغة لتبدأ، ثم المؤشر يمكن تكرار فقط وصولا الى هذا الطفل دون الواقع الحاجة إلى تخصيص أي شيء. هذا هو الحال حيث أننا حصل الأول تخصيص كلمة "القط". و وهذا يعني عندما نذهب إلى تخصيص "كارثة" نحن لسنا بحاجة لخلق العقد ل C-A-T مرة أخرى. كانت موجودة بالفعل. ما هو هذا آخر؟ هذا هو الشرط حيث كان ج مائل n، حيث كان ج سطر جديد. وهذا يعني أن لدينا بنجاح أكمل الكلمة. الآن ماذا نريد أن نفعل عندما كنا بنجاح كلمة واحدة؟ نحن ذاهبون الى استخدام هذا الحقل كلمة داخل البنية عقدة لدينا. نحن نريد أن تعيين هذا إلى true. بحيث يشير إلى أن هذه العقدة يدل على النجاح كلمة، وهي كلمة الفعلية. الآن تعيين هذا إلى true. نحن نريد لإعادة المؤشر إلى نقطة دينا إلى بداية TRIE مرة أخرى. وأخيرا، زيادة قاموسنا الحجم، منذ وجدنا عمل آخر. لذلك نحن في طريقنا للحفاظ على القيام بذلك، قراءة في حرف بحرف، بناء العقد الجديد في TRIE لدينا و لكل كلمة في القاموس، حتى ونحن في النهاية تصل إلى C! = EOF، الذي الحالة نحن خروج من الملف. الآن هناك حالتين تحت التي كنا قد ضرب EOF. الأول هو إذا كان هناك خطأ القراءة من ملف. حتى إذا كان هناك خطأ، ونحن تحتاج إلى القيام نموذجية. تفريغ كل شيء، على مقربة الملف، عودة كاذبة. على افتراض لم يكن هناك خطأ، وهذا يعني فقط أننا فعلا ضرب نهاية ملف، في هذه الحالة، فإننا إغلاق ملف والعودة الحقيقية لأننا القاموس تحميلها بنجاح في TRIE لدينا. حتى الآن دعونا تحقق من الاختيار. النظر في وظيفة الشيك، ونحن نرى أن الاختيار هو الذهاب لإرجاع منطقي. فإنها ترجع صحيح إذا هذه الكلمة أنه يتم تمريرها في TRIE لدينا. فإنها ترجع كاذبة خلاف ذلك. فكيف يتم تحديد ما إذا كان هذه الكلمة هي في TRIE لدينا؟ نرى هنا أنه، تماما مثل من قبل، ونحن في طريقنا إلى استخدام المؤشر للتنقل من خلال TRIE لدينا. الآن هنا ونحن في طريقنا لتكرار خلال موقعنا على الكلمة بأكملها. لذلك بالتكرار على كلمة نحن الماضية، ونحن في طريقنا لتحديد مؤشر إلى مجموعة الأطفال التي يقابل كلمة قوس أولا حتى هذا سوف تبدو تماما مثل الحمل، حيث إن كلمة [أنا] والفاصلة العليا، ثم نريد استخدام مؤشر "الأبجدية" - 1. لأننا قرر أن أن هو المكان الذي نحن ذاهبون لتخزين الفواصل العليا. إلا فإننا ذاهبون إلى استخدام اثنين من أقل كلمة قوس I. لذا تذكر تلك الكلمة يمكن يكون رأس المال التعسفي. ولذا فإننا نريد أن نتأكد من أننا باستخدام نسخة صغيرة من الأشياء. ومن ثم طرح من أن 'ا' لمرة واحدة مرة أخرى تعطينا الأبجدي موقف تلك الشخصية. بحيث سيكون لدينا مؤشر في مجموعة الأطفال. والآن إذا كان هذا المؤشر في الأطفال مجموعة باطل، وهذا يعني أننا لم تعد قادرة على الاستمرار بالتكرار أسفل TRIE لدينا. إذا كان هذا هو الحال، هذه الكلمة لا يمكن ربما يكون في TRIE لدينا. لأنه إذا جاز التعبير، التي من شأنها أن يعني لن يكون هناك مسار وصولا الى تلك الكلمة. وأنك لن تواجه فارغة. لذلك تواجه فارغة، نعود كاذبة. كلمة ليست في القاموس. إذا لم تكن فارغة، ثم نحن سوف تستمر بالتكرار. لذلك نحن ذاهبون الى هناك مؤشر للإشارة إلى أن خاصة العقدة في هذا الفهرس. ونحافظ على فعل ذلك طوال الكلمة بأكملها، على افتراض نحن أبدا ضرب فارغة. وهذا يعني أننا تمكنا من خلال الحصول على الكلمة بأكملها والعثور عقدة في محاولة لدينا. لكننا لم تفعل تماما حتى الآن. نحن لا نريد فقط أن العودة الحقيقية. نريد أن نعود المؤشر> الكلمة. منذ نتذكر مرة أخرى، هو "القط" ليست في قاموسنا، و "كارثة" و، فإننا سوف نحصل بنجاح من خلال كلمة "القط". ولكن المؤشر وسوف تكون كلمة كاذبة وليس صحيحا. لذلك نعود للإشارة إلى كلمة المؤشر إذا كانت هذه العقدة هي في الواقع كلمة واحدة. وهذا كل شيء عن الاختيار. لذلك دعونا تحقق من حجم. حتى حجم سيكون من السهل جدا منذ ذلك الحين، نتذكر في الحمل، ونحن تزايد حجم القاموس ل كل كلمة التي نواجهها. حتى حجم هو مجرد الذهاب الى العودة القاموس الحجم. وهذا كل شيء. لذلك قمنا أخيرا تفريغ. حتى يفرغ، ونحن في طريقنا للاستخدام وظيفة عودي إلى القيام به في الواقع كل العمل بالنسبة لنا. لذلك وظيفة لدينا هو الذهاب الى أن يطلق على مفرغ. ما هو مفرغ تنوي القيام به؟ نرى هنا أن يتم الانتقال إلى مفرغ تكرار عبر جميع الأطفال في هذه عقدة معينة. وإذا كان الطفل ليس العقدة فارغة، ثم نحن في طريقنا لل تفريغ عقدة الطفل. لذلك هذا هو أنت تفريغ متكرر جميع أطفالنا. مرة واحدة ونحن على يقين من أن جميع أطفالنا تم تفريغها، ثم نحن يمكن أن نحرر أنفسنا، لذلك تفريغ أنفسنا. وهذا العمل بشكل متكرر تفريغ TRIE بأكمله. ثم مرة واحدة فعلت ذلك، يمكننا فقط العودة الحقيقية. لا يمكن أن تفشل تفريغ. نحن فقط تحرير الأشياء. ذلك مرة واحدة ننتهي تحرير كل شيء، والعودة الحقيقية. وهذا كل شيء. اسمي روب. وكان هذا سبيلر. [عزف الموسيقى]